Re: A question about reply timeout
up Le ven. 26 juil. 2019 à 16:08, Damien Nicolas a écrit : > Hmmm actually, if I add a queue, it just move the problem. Any idea? > > Le ven. 26 juil. 2019 à 14:46, Damien Nicolas 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 > -- Damien NICOLAS
Re: A question about reply timeout
Hmmm actually, if I add a queue, it just move the problem. Any idea? Le ven. 26 juil. 2019 à 14:46, Damien Nicolas 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
Re: A question about reply timeout
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 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
A question about reply timeout
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