使用jms出站网关时如何处理超时异常?

How to handle timeout exception when using jms outbound gateway?

我有一个像这样的 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 重新发送相同的消息。或者,如果您的流程从 <poller>message-driven-ednpoint.

否则不清楚你的目标是什么。 Spring 集成中的异常并不像在典型的 Java 应用程序中那样提供更多的复杂性。