Hi guys,
I‘m new to this forum.
We have an issue with multicast and aggregation.
Before calling route direct:putEvent, header correlationId is also set, so
correlation is working. Goal, that we are trying to achieve here, is that we
need, that after message is sent to routeX, which sends message to
rabbitmq:toQueue , after some time message is received in routeY , thus both
messages can be aggregated in the aggregator, if their correlationId coincides.
The problem here is that first route is not waiting for second message from
routeY to arrive to aggregator, and returns right away. How can we make first
route to wait until completionTimeout or completionSize conditions are
satisfied?
Code:
<camel:route id="routeX">
<camel:from uri="direct:putEvent" />
<camel:multicast stopOnException="true" parallelProcessing="false">
<camel:to uri="rabbitmq:toQueue" />
<camel:to uri="direct:toAggregator" />
</camel:multicast>
</camel:route>
<camel:route id="routeY">
<camel:from uri="rabbitmq:fromOtherQueue" />
<camel:setHeader headerName="correlationId">
<camel:xpath
resultType="java.lang.String">//event[1]//id[1]</camel:xpath>
</camel:setHeader>
<camel:to uri="direct:toAggregator" />
</camel:route>
<camel:route id="aggregationRoute">
<camel:from uri="direct:toAggregator" />
<camel:aggregate strategyRef="myStrategy" completionTimeout="7000"
parallelProcessing="false"
eagerCheckCompletion="false">
<!-- aggregate all messages into the same group -->
<camel:correlationExpression>
<camel:simple>header.correlationId</camel:simple>
</camel:correlationExpression>
<camel:completionSize>
<camel:simple>2</camel:simple>
</camel:completionSize>
</camel:aggregate>
</camel:route>
Thanks in advance.
----------------------------------------------------------------------
Šioje žinutėje ir bet kokiuose jos prieduose pateikiama informacija yra
konfidenciali ir jos panaudojimas ar atskleidimas gali būti apribotas. Ji
skirta tik tam asmeniui, kuriam ji adresuota. Jei Jūs nesate adresatas arba
atsakingas už šios žinutės pristatymą tam asmeniui, Jūs neturite teisės šios
žinutės ar jos priedų kopijuoti, atskleisti, platinti ar kitaip perduoti jos
turinio bet kuriam kitam asmeniui. Jei Jūs per klaidą gavote šią žinutę,
prašome nedelsiant pranešti jos siuntėjui bei iškart ištrinti šią žinutę ir bet
kokius jos priedus iš Jūsų sistemos.
----------------------------------------------------------------------