spring amqp ReplyRequiredException

时间:2014-10-07 13:43:41

标签: spring-integration spring-amqp qpid

我使用spring integration和amqp实现了请求/回复。请求可能需要很长时间才能处理(某些情况下可能需要一个小时),由于某种原因客户端抛出异常 -

Exception in thread "main" org.springframework.integration.handler.ReplyRequiredException: No reply produced by handler 'client', and its 'requiresReply' property is set to true.

我的客户端配置在下面。

 <int-amqp:outbound-gateway
        id="client"
        request-channel="in"
        reply-channel="res"
        exchange-name="reportingServer"
        routing-key-expression="'report.req.'+headers.id"
        amqp-template="amqpTemplate" requires-reply="true">
        </int-amqp:outbound-gateway>

我认为回复超时默认值为-1,意味着无限期等待,但不确定为什么它不起作用,任何帮助都将不胜感激。

在amqp中实现如此长时间的等待操作还有任何已知问题,或者应该没问题吗?

谢谢

1 个答案:

答案 0 :(得分:1)

只要你没有太多的并发请求就没问题了 - 如果你有大量的线程在等待回复,它就不能很好地扩展。

如果你需要扩展它,你可以设计一个与一对出站和入站适配器的异步等价物,但它比使用网关更复杂,实际的实现将取决于你的其余流程。基本上,您必须设置replyTo标头才能使回复进入入站适配器。

如果您在AMQP网关的上游有一个简单的<gateway/>,则需要确保replyChannel标头不会丢失。 See Header Channel Registry in this section