简体   繁体   English

请求-答复有以下几个队列

[英]Request-Reply with several following queues

I have multiple sequential queues in InOut pattern, each queue leads to one Camel processor. 我在InOut模式中有多个顺序队列,每个队列通向一个Camel处理器。 If a processor takes too much time for a treatment, I would like that the request-reply detects a timeout and send a ExchangeTimedOutException . 如果处理器要花费太多时间进行处理,我希望请求回复检测到超时并发送ExchangeTimedOutException The timeout with CamelJmsRequestTimeout works but only for the first queue. CamelJmsRequestTimeout的超时有效,但仅适用于第一个队列。

Example, If I have this: 例如,如果我有这个:

q1 -> p1 -> q2 -> p2 ->  q3 -> p3

q1 CamelJmsRequestTimeout is for example 5s. q1 CamelJmsRequestTimeout例如为5s。 If each processor take 3s (I simulate latency in processor with sleep()), I will have a timeout at p2 cause the total time is 6s. 如果每个处理器花费3s(我使用sleep()模拟处理器中的延迟),我将在p2处超时,因为总时间为6s。 Why the reply to q1 is not sent after p1 instead, manifestly, after p3? 为什么对p1的答复不是在p1之后而是在p3之后明显地发送的?

This is an example code: 这是一个示例代码:

from("jms:queue:q1")
        .setExchangePattern(ExchangePattern.InOut)
        .setHeader(JmsConstants.JMS_REQUEST_TIMEOUT, constant("5000"))
        .process("p1")
        .to("jms:queue:q2");

from("jms:queue:q2")
        .setExchangePattern(ExchangePattern.InOut)
        .setHeader(JmsConstants.JMS_REQUEST_TIMEOUT, constant("5000"))
        .process("p2")
        .to("jms:queue:q3");

from("jms:queue:q3")
        .setExchangePattern(ExchangePattern.InOut)
        .setHeader(JmsConstants.JMS_REQUEST_TIMEOUT, constant("5000"))
        .process("p3");

Is my design possible? 我的设计可行吗? If yes, which option should I use? 如果是,我应该使用哪个选项?

Thanks 谢谢

EDIT: 编辑:

2019-08-07 09:45:02,718 [main] INFO  SpringCamelContext  - Apache Camel 2.21.0 (CamelContext: camel-1) started in 1.152 seconds
2019-08-07 09:45:05,973 [Camel (camel-1) thread #1 - JmsConsumer[q1]] INFO  input  - Exchange[ExchangePattern: InOut, BodyType: String, Body: stuff in the body]
2019-08-07 09:45:09,022 [Camel (camel-1) thread #2 - JmsConsumer[q2]] INFO  input  - Exchange[ExchangePattern: InOut, BodyType: String, Body: stuff in the body]
2019-08-07 09:45:11,991 [Camel (camel-1) thread #25 - JmsReplyManagerOnTimeout[q2]] WARN  TemporaryQueueReplyManager  - Timeout occurred after 5000 millis waiting for reply message with correlationID [Camel-ID-ITEM-S69138-1565163898705-0-2] on destination temp-queue://ID:ITEM-S69138-55901-1565163899733-4:20:1. Setting ExchangeTimedOutException on (MessageId: ID:ITEM-S69138-55901-1565163899733-4:19:1:1:1 on ExchangeId: ID-ITEM-S69138-1565163898705-0-1) and continue routing.
2019-08-07 09:45:11,996 [Camel (camel-1) thread #1 - JmsConsumer[q1]] WARN  EndpointMessageListener  - Execution of JMS message listener failed. Caused by: [org.apache.camel.RuntimeCamelException - org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 5000 millis due reply message with correlationID: Camel-ID-ITEM-S69138-1565163898705-0-2 not received on destination: temp-queue://ID:ITEM-S69138-55901-1565163899733-4:20:1. Exchange[ID-ITEM-S69138-1565163898705-0-1]]
org.apache.camel.RuntimeCamelException: org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 5000 millis due reply message with correlationID: Camel-ID-ITEM-S69138-1565163898705-0-2 not received on destination: temp-queue://ID:ITEM-S69138-55901-1565163899733-4:20:1. Exchange[ID-ITEM-S69138-1565163898705-0-1]
    at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1830)
    at org.apache.camel.component.jms.EndpointMessageListener$EndpointMessageListenerAsyncCallback.done(EndpointMessageListener.java:196)
    at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:117)
    at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:719)
    at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:679)
    at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:649)
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:317)
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:255)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1168)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1160)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1057)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 5000 millis due reply message with correlationID: Camel-ID-ITEM-S69138-1565163898705-0-2 not received on destination: temp-queue://ID:ITEM-S69138-55901-1565163899733-4:20:1. Exchange[ID-ITEM-S69138-1565163898705-0-1]
    at org.apache.camel.component.jms.reply.ReplyManagerSupport.processReply(ReplyManagerSupport.java:170)
    at org.apache.camel.component.jms.reply.TemporaryQueueReplyHandler.onTimeout(TemporaryQueueReplyHandler.java:62)
    at org.apache.camel.component.jms.reply.CorrelationTimeoutMap$1.run(CorrelationTimeoutMap.java:60)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    ... 3 more
2019-08-07 09:45:11,997 [Camel (camel-1) thread #25 - JmsReplyManagerOnTimeout[q2]] ERROR DefaultErrorHandler  - Failed delivery for (MessageId: ID:ITEM-S69138-55901-1565163899733-4:19:1:1:1 on ExchangeId: ID-ITEM-S69138-1565163898705-0-1). Exhausted after delivery attempt: 1 caught: org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 5000 millis due reply message with correlationID: Camel-ID-ITEM-S69138-1565163898705-0-2 not received on destination: temp-queue://ID:ITEM-S69138-55901-1565163899733-4:20:1. Exchange[ID-ITEM-S69138-1565163898705-0-1]

Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor                                                                        Elapsed (ms)
[route1            ] [route1            ] [jms://queue:q1                                                                ] [      9051]
[route1            ] [setExchangePattern] [setExchangePattern[InOut]                                                     ] [         6]
[route1            ] [setHeader1        ] [setHeader[CamelJmsRequestTimeout]                                             ] [         0]
[route1            ] [process1          ] [Processor@0x39652a30                                                          ] [      3001]
[route1            ] [to1               ] [log:input                                                                     ] [         4]
[route1            ] [to2               ] [jms:queue:q2                                                                  ] [      6019]

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 5000 millis due reply message with correlationID: Camel-ID-ITEM-S69138-1565163898705-0-2 not received on destination: temp-queue://ID:ITEM-S69138-55901-1565163899733-4:20:1. Exchange[ID-ITEM-S69138-1565163898705-0-1]
    at org.apache.camel.component.jms.reply.ReplyManagerSupport.processReply(ReplyManagerSupport.java:170)
    at org.apache.camel.component.jms.reply.TemporaryQueueReplyHandler.onTimeout(TemporaryQueueReplyHandler.java:62)
    at org.apache.camel.component.jms.reply.CorrelationTimeoutMap$1.run(CorrelationTimeoutMap.java:60)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
2019-08-07 09:45:12,062 [Camel (camel-1) thread #3 - JmsConsumer[q3]] INFO  input  - Exchange[ExchangePattern: InOut, BodyType: String, Body: stuff in the body]
2019-08-07 09:45:12,093 [Camel (camel-1) thread #4 - JmsConsumer[q4]] INFO  input  - Exchange[ExchangePattern: InOnly, BodyType: String, Body: stuff in the body]
2019-08-07 09:45:15,034 [Camel (camel-1) thread #28 - JmsReplyManagerOnTimeout[q3]] WARN  TemporaryQueueReplyManager  - Timeout occurred after 5000 millis waiting for reply message with correlationID [Camel-ID-ITEM-S69138-1565163898705-0-4] on destination temp-queue://ID:ITEM-S69138-55901-1565163899733-4:21:1. Setting ExchangeTimedOutException on (MessageId: ID:ITEM-S69138-55901-1565163899733-4:1:1:1:1 on ExchangeId: ID-ITEM-S69138-1565163898705-0-3) and continue routing.
2019-08-07 09:45:15,038 [Camel (camel-1) thread #2 - JmsConsumer[q2]] WARN  EndpointMessageListener  - Execution of JMS message listener failed. Caused by: [org.apache.camel.RuntimeCamelException - org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 5000 millis due reply message with correlationID: Camel-ID-ITEM-S69138-1565163898705-0-4 not received on destination: temp-queue://ID:ITEM-S69138-55901-1565163899733-4:21:1. Exchange[ID-ITEM-S69138-1565163898705-0-3]]
org.apache.camel.RuntimeCamelException: org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 5000 millis due reply message with correlationID: Camel-ID-ITEM-S69138-1565163898705-0-4 not received on destination: temp-queue://ID:ITEM-S69138-55901-1565163899733-4:21:1. Exchange[ID-ITEM-S69138-1565163898705-0-3]
    at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1830)
    at org.apache.camel.component.jms.EndpointMessageListener$EndpointMessageListenerAsyncCallback.done(EndpointMessageListener.java:196)
    at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:117)
    at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:719)
    at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:679)
    at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:649)
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:317)
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:255)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1168)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1160)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1057)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 5000 millis due reply message with correlationID: Camel-ID-ITEM-S69138-1565163898705-0-4 not received on destination: temp-queue://ID:ITEM-S69138-55901-1565163899733-4:21:1. Exchange[ID-ITEM-S69138-1565163898705-0-3]
    at org.apache.camel.component.jms.reply.ReplyManagerSupport.processReply(ReplyManagerSupport.java:170)
    at org.apache.camel.component.jms.reply.TemporaryQueueReplyHandler.onTimeout(TemporaryQueueReplyHandler.java:62)
    at org.apache.camel.component.jms.reply.CorrelationTimeoutMap$1.run(CorrelationTimeoutMap.java:60)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    ... 3 more
2019-08-07 09:45:15,039 [Camel (camel-1) thread #28 - JmsReplyManagerOnTimeout[q3]] ERROR DefaultErrorHandler  - Failed delivery for (MessageId: ID:ITEM-S69138-55901-1565163899733-4:1:1:1:1 on ExchangeId: ID-ITEM-S69138-1565163898705-0-3). Exhausted after delivery attempt: 1 caught: org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 5000 millis due reply message with correlationID: Camel-ID-ITEM-S69138-1565163898705-0-4 not received on destination: temp-queue://ID:ITEM-S69138-55901-1565163899733-4:21:1. Exchange[ID-ITEM-S69138-1565163898705-0-3]

Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor                                                                        Elapsed (ms)
[route2            ] [route2            ] [jms://queue:q2                                                                ] [      9017]
[route2            ] [setExchangePattern] [setExchangePattern[InOut]                                                     ] [         0]
[route2            ] [setHeader2        ] [setHeader[CamelJmsRequestTimeout]                                             ] [         0]
[route2            ] [process2          ] [Processor@0x5763a655                                                          ] [      3001]
[route2            ] [to3               ] [log:input                                                                     ] [         2]
[route2            ] [to4               ] [jms:queue:q3                                                                  ] [      6012]

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 5000 millis due reply message with correlationID: Camel-ID-ITEM-S69138-1565163898705-0-4 not received on destination: temp-queue://ID:ITEM-S69138-55901-1565163899733-4:21:1. Exchange[ID-ITEM-S69138-1565163898705-0-3]
    at org.apache.camel.component.jms.reply.ReplyManagerSupport.processReply(ReplyManagerSupport.java:170)
    at org.apache.camel.component.jms.reply.TemporaryQueueReplyHandler.onTimeout(TemporaryQueueReplyHandler.java:62)
    at org.apache.camel.component.jms.reply.CorrelationTimeoutMap$1.run(CorrelationTimeoutMap.java:60)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
2019-08-07 09:45:18,071 [Camel (camel-1) thread #29 - JmsReplyManagerOnTimeout[q4]] WARN  TemporaryQueueReplyManager  - Timeout occurred after 5000 millis waiting for reply message with correlationID [Camel-ID-ITEM-S69138-1565163898705-0-6] on destination temp-queue://ID:ITEM-S69138-55901-1565163899733-4:22:1. Setting ExchangeTimedOutException on (MessageId: ID:ITEM-S69138-55901-1565163899733-4:2:1:1:1 on ExchangeId: ID-ITEM-S69138-1565163898705-0-5) and continue routing.
2019-08-07 09:45:18,072 [Camel (camel-1) thread #3 - JmsConsumer[q3]] WARN  EndpointMessageListener  - Execution of JMS message listener failed. Caused by: [org.apache.camel.RuntimeCamelException - org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 5000 millis due reply message with correlationID: Camel-ID-ITEM-S69138-1565163898705-0-6 not received on destination: temp-queue://ID:ITEM-S69138-55901-1565163899733-4:22:1. Exchange[ID-ITEM-S69138-1565163898705-0-5]]
org.apache.camel.RuntimeCamelException: org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 5000 millis due reply message with correlationID: Camel-ID-ITEM-S69138-1565163898705-0-6 not received on destination: temp-queue://ID:ITEM-S69138-55901-1565163899733-4:22:1. Exchange[ID-ITEM-S69138-1565163898705-0-5]
    at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1830)
    at org.apache.camel.component.jms.EndpointMessageListener$EndpointMessageListenerAsyncCallback.done(EndpointMessageListener.java:196)
    at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:117)
    at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:719)
    at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:679)
    at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:649)
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:317)
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:255)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1168)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1160)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1057)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 5000 millis due reply message with correlationID: Camel-ID-ITEM-S69138-1565163898705-0-6 not received on destination: temp-queue://ID:ITEM-S69138-55901-1565163899733-4:22:1. Exchange[ID-ITEM-S69138-1565163898705-0-5]
    at org.apache.camel.component.jms.reply.ReplyManagerSupport.processReply(ReplyManagerSupport.java:170)
    at org.apache.camel.component.jms.reply.TemporaryQueueReplyHandler.onTimeout(TemporaryQueueReplyHandler.java:62)
    at org.apache.camel.component.jms.reply.CorrelationTimeoutMap$1.run(CorrelationTimeoutMap.java:60)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    ... 3 more
2019-08-07 09:45:18,073 [Camel (camel-1) thread #29 - JmsReplyManagerOnTimeout[q4]] ERROR DefaultErrorHandler  - Failed delivery for (MessageId: ID:ITEM-S69138-55901-1565163899733-4:2:1:1:1 on ExchangeId: ID-ITEM-S69138-1565163898705-0-5). Exhausted after delivery attempt: 1 caught: org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 5000 millis due reply message with correlationID: Camel-ID-ITEM-S69138-1565163898705-0-6 not received on destination: temp-queue://ID:ITEM-S69138-55901-1565163899733-4:22:1. Exchange[ID-ITEM-S69138-1565163898705-0-5]

Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor                                                                        Elapsed (ms)
[route3            ] [route3            ] [jms://queue:q3                                                                ] [      9010]
[route3            ] [setExchangePattern] [setExchangePattern[InOut]                                                     ] [         0]
[route3            ] [setHeader3        ] [setHeader[CamelJmsRequestTimeout]                                             ] [         0]
[route3            ] [process3          ] [Processor@0x40c8067                                                           ] [      3000]
[route3            ] [to5               ] [log:input                                                                     ] [         0]
[route3            ] [to6               ] [jms:queue:q4                                                                  ] [      6009]

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 5000 millis due reply message with correlationID: Camel-ID-ITEM-S69138-1565163898705-0-6 not received on destination: temp-queue://ID:ITEM-S69138-55901-1565163899733-4:22:1. Exchange[ID-ITEM-S69138-1565163898705-0-5]
    at org.apache.camel.component.jms.reply.ReplyManagerSupport.processReply(ReplyManagerSupport.java:170)
    at org.apache.camel.component.jms.reply.TemporaryQueueReplyHandler.onTimeout(TemporaryQueueReplyHandler.java:62)
    at org.apache.camel.component.jms.reply.CorrelationTimeoutMap$1.run(CorrelationTimeoutMap.java:60)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

The important point here is that you do 3 individual JMS interactions . 这里的重点是您要进行3个单独的JMS交互

So, if you would have no timeouts at all , the sender would receive the answer after about 9 seconds on the answer queue it listens on. 因此,如果您根本没有超时 ,则发送方将在侦听的答案队列上约9秒后收到答案。 Because the sender does not know about the things behind q1, this would look like 由于发件人不知道q1背后的内容,因此看起来

Sender > q1 > listen on answer-q and wait > answer-message

When you set the timeout to 5 seconds at the sender, the request is discarded when the timeout is reached. 当您在发送方将超时设置为5秒时,达到超时时,该请求将被丢弃。

Sender > q1 > listen on answer-q > stop listening after 5 seconds

However, when the sender stops listening for the answer of q1, this does not affect the other JMS interactions ! 但是,当发送者停止监听 q1的答案时,这不会影响其他JMS交互 Every JMS producer starts the timeout when it sends the message. 每个JMS生产者在发送消息时都会启动超时。

The producer of the q1-route sends a message to q2 about 3 seconds after it has received the message from the sender. q1路由的生产者在收到发送者的消息后约3秒钟向q2发送消息。 Because the processing from this point takes at least 6 seconds, it also runs into the timeout. 由于此后的处理至少需要6秒钟,因此它也会超时。 So it also stops listening for an answer after 5 seconds. 因此,它还会在5秒钟后停止收听答案。

The producer of the q2-route sends a message to q3 about 3 seconds after it has received the message from the q1-route and about 6 seconds after the sender has sent the initial message. q2路由的生产者从q1路由接收到消息后约3秒钟将消息发送到q3,而发送者发送初始消息后约6秒钟将消息发送到q3。 Because the processing from this point takes about 3 seconds, it will receive an answer from q3. 因为从这一点开始的处理大约需要3秒钟,它将收到来自q3 的答案

It will then try to send this answer back to the producer of the q1-route, but this one already stopped listening. 然后它将尝试将此答案发送回q1路由的生产者,但是此答案已停止监听。 I assume this will fail, but I don't know the exact behavior of the temporary answer-queues. 我认为这将失败,但是我不知道临时应答队列的确切行为。

To sum up the whole thing: the final processing result will be computed, but because this takes too long it cannot be sent back to the sender . 总而言之: 将计算最终的处理结果,但是由于这花费的时间太长,因此无法将其发送回发件人

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM