Hi

Using the JdbcAggregationRepository I am trying to save the relation between my 
incoming messages and the aggregate, as a 1-n relation. It is actually the EDI 
Messages (Single message) into the EDI Interchange (Collection of messages).
When I run the route, I see that the entries are available in the my-SQL 
aggregation table.
If the aggregate is finished, then all the entries are gone, both tables 
aggregation and aggregation_completed are empty
Is that normal? Or Do I have an error somewhere in my setup?

I was trying to find another solution to get my relation saved. In my 
AggregatorStrategy class, in the aggregate method I did save a list of 
messages, and in the onCompletion method, I set that list as a Header. This 
works only if I use the correlationExpression 'true', but actually I do 
aggregate messages with same doctype like "DESADV" and "INVOIC" and then the 
value of the Header is always just the one from the last processed aggregate

My route looks like this (simplified)

from("file:{{dir.from}}")
.choice()
.when()....setHeader("doctype").constant("DESADV")
.when()....setHeader("doctype").constant("INVOICE")
.aggregate(header("doctype"), new 
EDIMessageToInterchangeAggregator()).aggregationRepository("repo3")
.log("Header: ${header.messageIDList}") // Shows always the latest Aggregate 
Header only

If I run message for one doctype only, then it all works, cause there will only 
be one aggregate

My bean config is like this:
       <bean id="repo3"
         
class="org.apache.camel.processor.aggregate.jdbc.JdbcAggregationRepository">
         <property name="repositoryName" value="test_aggregation"/>
         <property name="transactionManager" ref="txManager"/>
         <property name="dataSource" ref="datasource"/>
         <!-- configure to store the message body and following headers as text 
in the repo -->

         <property name="storeBodyAsText" value="true"/>
         <property name="headersToStoreAsText">
           <list>
             <value>doctype</value>
             <value>messageID</value>
             <value>interchangeID</value>
           </list>
         </property>
       </bean>

       <bean id="txManager" 
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
       <property name="dataSource" ref="datasource"/>
       </bean>

My environment:
Camel 3.16.0
Java 11
SpringBoot 2.6.4
MySQL 8.x


Reply via email to