Writing my problem helps me to figure out how to solve it: the message in q1 is injected from Spring and no queue for reply was defined. I changed the exchange pattern of the q1 to InOnly, and now it works.
Le ven. 26 juil. 2019 à 14:46, Damien Nicolas <[email protected]> a écrit : > Hello, > I have multiple sequential queues in InOut pattern, each queue leads to > one processor. > If a processor takes too much time for a treatment, I would like that the > request-reply detects a timeout and send a timeout exception. > The timeout with "*CamelJmsRequestTimeout*" works but only for the first > queue. > > Example: > If I have this: > > q1 -> p1 -> q2 -> p2 -> q3 -> p3 > > q1 *CamelJmsRequestTimeout *is for example 15". If each processor take > 6", I will have a timeout at p3. > I would like to have a reply to q1 after p1 and not after p3. And being > able to modulate the timeout after each processing. > > This is an example code: > > from("jms:queue:q1") > .setExchangePattern(ExchangePattern.InOut) > .setHeader("CamelJmsRequestTimeout", constant("15000")) > .process("p1") > .to("jms:queue:q2"); > > from("jms:queue:q2") > .setExchangePattern(ExchangePattern.InOut) > .setHeader("CamelJmsRequestTimeout", constant("5000")) > .process("p2") > .to("jms:queue:q3"); > > from("jms:queue:q3") > .setExchangePattern(ExchangePattern.InOut) > .setHeader("CamelJmsRequestTimeout", constant("5000")) > .process("p3"); > > I tried to double the concurrentConsumers (so from 1 to 2) on each > procuder for the reply on the temp queue, but I still have this problem. > > Is my design possible? If yes, which option should I use? > > Thanks > -- Damien NICOLAS
