2. Batch Processing
• Batch component is used to process huge messages in batches. In batch we
have 3 phases.
1. Input
2. Process Records
3. On complete
Input:
Input phase is used to prepare a collection object with input message.
Because process records phase expects a collection object.
3. Process Records:
• Process Record phase expects a collection object to process the each
record of collection in individually and parallel. Here each object of collection
is a record.
On Complete:
• On complete phase is used to summarize the flow. Following variables
are available in On Complete phase to get the status of flow.
• Count of Successful records
• Count of Failure records
• Count of total records.
4. Example:
• In the following example, it explains how to transform CSV to XML using batch.
This example exposes a HTTP rest service.
5. • In the main flow input csv file path sets to payload and refer to a batch job.
6. • In Input phase, an expression component is used to read file
(src/main/resources/input.csv) data. This expression component refers to a file
(src/main/resources/ReadFile.txt) which has code to read file data. Another
expression component has below expression to create a collection object.
• payload = new com.techm.common.util.LineIterator(payload);
• LineIterator is our custom class which implements Iterator Interface to
implement collection object. Below is code of LineIterator class.
7. Note : Java Code Continuation from line 31 on next slide.
8.
9. • In Process Records phase, we have two batch steps to transform payload
from csv to xml using datamapper and write the xml data into a file. Second
batch step contains batch commit. The message processors which are in
batch commit scope get execute depends of size of batch commit.
• <batch:commit size="5" doc:name="Batch Commit">
• This batch commit get executed for every 5 records as configured.
• On Complete phase has one logger component which logs successful,
failure and total no of records.
• Note : SOAP UI project to test this application is placed in
src/test/resources.