我有一个像这样的 jms 出站网关:
<jms:outbound-gateway request-destination = "requestQueue"
reply-destination="replayQueue"
request-channel="sendToJmsChannel"
reply-channel="receiveFromJmsChannel"
receive-timeout="5000"/>
在我的 Spring 集成流程中,我将请求发送到"sendToJmsChannel"并处理来自"receiveFromJmsChannel"的回复
问题是,当receive-timeout
已过并且没有回复给reply-destination
时,我如何处理这种情况?
JmsOutboundGateway
thorws:
throw new MessageTimeoutException(message,
"failed to receive JMS response within timeout of: " + this.receiveTimeout + "ms");
在这种情况下超时(默认为 5 秒)。
您可以在<request-handler-advice-chain>
内配置<retry-advice>
,以便<jms:outbound-gateway>
将同一消息重新发送到该MessageTimeoutException
上的request-destination
。或者只是从具有常规try...catch
的调用方处理它,或者如果您的流从<poller>
或message-driven-ednpoint
开始,则在error-channel
上的ErrorHandler
中处理它。
否则,不清楚你的目标是什么。Spring 集成中的异常不会像在典型的 Java 应用程序中那样提供更多的复杂性。