git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: concurrentConsumers create duplicated messages and fail


Ok.. I forgot to add the InOut pattern on my camel consuming queue.

Le ven. 19 oct. 2018 à 09:18, Damien Nicolas <dmn.nicolas@xxxxxxxxx> a
écrit :

> up
>
> Le mar. 16 oct. 2018 à 16:40, Damien Nicolas <dmn.nicolas@xxxxxxxxx> a
> écrit :
>
>> Hello,
>>
>> I have a Springboot war with Camel routes deployed on a JBoss EAP 7.1
>> server. The routes are generated dynamically and some of them have *concurrentConsumers
>> > 1* because a route can have several times the same processor;
>>
>> example (here a schematically representation of a route):
>> cxf -> jmsx -> jms1 -> p1 -> jms2 -> p2 -> jms1 -> p1 -> jms3 -> p3...
>>
>> where jms1 will have* concurrentConsumers=2 *cause it use two times p1.
>> This is working wonderfully.
>>
>> But, for architectural purpose, I had to split the application in 2. Each
>> half of the application is on a different JBoss server, schematized here:
>>
>> *JBoss1     |  JBoss2*
>> *cxf     -> |   jmsx -> jms1 -> p1 -> jms2 -> p2 -> jms1 -> p1 -> jms3 ->
>> p3... *
>>
>>  "jmsx" is a remote queue which is the link between the two servers, and
>> is used to "inject" messages into the Camel business. The messages are
>> correctly consumed by Camel, but when they arrived on a part where *
>> concurrentConsumer=n*, the messages are duplicated n times and make the
>> workflow fails.
>>
>> The messages are created on JBoss1 with JMS:
>>
>>             Session s = connectionFactory.createConnection("test3", "test3").createSession();
>>             ObjectMessage m = s.createObjectMessage();
>>             m.setObject(object);
>>             m.setStringProperty("Accept", "application/json");
>>             m.setStringProperty("Content_Type", "application/json");
>>             m.setStringProperty("type", "chip");
>>             m.setStringProperty("hasCertificate", "true");
>>             m.setStringProperty("priority", "NORMAL");
>>             m.setStringProperty("context", "xxx");
>>
>>             try (JMSContext context = connectionFactory.createContext(userName, password)) {
>>                     context.createProducer().send(destination, m);
>> .......
>>
>>
>> Is the problem comes about the fact there is less header properties
>> generated when I create manually the headers?? or something else???
>> Here is the difference between the header properties of the first version
>> of the project and the second one <https://pastebin.com/qvahstrq>
>>
>>
>> --
>> Damien NICOLAS
>>
>
>
> --
> Damien NICOLAS
>


-- 
Damien NICOLAS