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



我有一个像这样的 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 应用程序中那样提供更多的复杂性。

最新更新