Java DSL (Splitter)
In some scenarios, the messages that we are processing may contain multiple elements and each of these may need to be handled in a completely different manner. In these situations, we use the Splitter pattern to allow us to separate a message into different parts and route each one individually.
In the following example, we see the implementation of a Splitter pattern to break a single composite message into separate pieces with each containing data related to a single item.
Java DSL Example
In the following route, we are consuming messages from an inbound folder. As it is read, each file will then be separated into a new message using a tokenizer. It is based on line breaks (“\n”) and we split out each new message as we move thru the file content line by line.
from("file://inbound")
.split(body().tokenize("\n"))
.to("acct:orderLines");
We can also separate our messages based on streams using streaming mode:
.split(body().tokenize(",")).streaming().to("acct:parts");
Or, in all the prior examples the message splits are happening in sequence. We can also perform this in parallel by using the parallelProcessing option:
.split(body().tokenize(",")).streaming()
.parallelProcessing().to("acct:parts");