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

concurrentConsumers create duplicated messages and fail


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
> 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",
            ObjectMessage m = s.createObjectMessage();
            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 <>