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

时间:2015-01-08 13:47:06

标签: spring-integration

我有一个像这样的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,我该如何处理?

1 个答案:

答案 0 :(得分:0)

JmsOutboundGateway荆棘:

throw new MessageTimeoutException(message,
                        "failed to receive JMS response within timeout of: " + this.receiveTimeout + "ms");

如果超时(默认为5秒)。

您可以<retry-advice><request-handler-advice-chain>内配置<jms:outbound-gateway>,以便将同一邮件重新发送至该request-destination上的MessageTimeoutException。或者,如果您的流程从try...catchErrorHandler开始,则只需定期error-channel<poller>上的message-driven-ednpoint来处理来电。 / p>

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