| 
									
										
										
										
											2017-10-16 19:33:15 +02:00
										 |  |  | --- | 
					
						
							|  |  |  | layout: pattern | 
					
						
							|  |  |  | title: EIP Splitter | 
					
						
							|  |  |  | folder: eip-splitter | 
					
						
							|  |  |  | permalink: /patterns/eip-splitter/ | 
					
						
							| 
									
										
										
										
											2017-12-25 11:30:24 +02:00
										 |  |  | categories: Integration | 
					
						
							| 
									
										
										
										
											2021-05-19 10:49:05 -06:00
										 |  |  | language: en | 
					
						
							| 
									
										
										
										
											2017-10-16 19:33:15 +02:00
										 |  |  | tags: | 
					
						
							| 
									
										
										
										
											2019-12-13 21:09:28 +02:00
										 |  |  |  - Enterprise Integration Pattern | 
					
						
							| 
									
										
										
										
											2017-10-16 19:33:15 +02:00
										 |  |  | --- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Intent
 | 
					
						
							| 
									
										
										
										
											2017-10-17 12:42:41 +02:00
										 |  |  | It is very common in integration systems that incoming messages consists of many items bundled together. For example | 
					
						
							|  |  |  | an invoice document contains multiple invoice lines describing transaction (quantity, name of provided | 
					
						
							|  |  |  | service/sold goods, price etc.). Such bundled messages may not be accepted by other systems. This is where splitter | 
					
						
							|  |  |  | pattern comes in handy. It will take the whole document, split it based on given criteria and send individual | 
					
						
							|  |  |  | items to the endpoint. | 
					
						
							| 
									
										
										
										
											2017-10-16 19:33:15 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-07 20:01:13 +02:00
										 |  |  | ## Diagram
 | 
					
						
							| 
									
										
										
										
											2017-10-17 12:42:41 +02:00
										 |  |  |  | 
					
						
							| 
									
										
										
										
											2017-10-16 19:33:15 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## Applicability
 | 
					
						
							| 
									
										
										
										
											2017-10-17 12:42:41 +02:00
										 |  |  | Use the Splitter pattern when | 
					
						
							| 
									
										
										
										
											2017-10-16 19:33:15 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-17 12:42:41 +02:00
										 |  |  | * You need to split received data into smaller pieces to process them individually | 
					
						
							|  |  |  | * You need to control the size of data batches you are able to process | 
					
						
							| 
									
										
										
										
											2017-10-16 19:33:15 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## Credits
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-17 12:42:41 +02:00
										 |  |  | * [Gregor Hohpe, Bobby Woolf - Enterprise Integration Patterns](http://www.enterpriseintegrationpatterns.com/patterns/messaging/Sequencer.html) | 
					
						
							|  |  |  | * [Apache Camel - Documentation](http://camel.apache.org/splitter.html) | 
					
						
							| 
									
										
										
										
											2020-07-07 21:23:04 +03:00
										 |  |  | * [Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions](https://www.amazon.com/gp/product/0321200683/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0321200683&linkCode=as2&tag=javadesignpat-20&linkId=122e0cff74eedd004cc81a3ecfa623cf) |