【发布时间】:2013-06-13 15:19:13
【问题描述】:
我正在按照Stock Trading 示例的说明进行操作,该示例概述了如何在spring-amqp 中使用请求/回复消息:http://static.springsource.org/spring-amqp/docs/1.2.x/reference/html/sample-apps.html#d4e742
我已调整示例说明以创建一个客户端,该客户端应使用convertSendAndReceive 而不是convertAndSend 等待回复:https://gist.github.com/pulkitsinghal/5774487
现在,即使回复已放在 responseQueue 上,并且我已将超时 rabbitTemplate.setReplyTimeout(60000); 更新为比默认的 5 秒长……在我的客户端中,我收到了 null 作为回复。
有人知道怎么回事吗?
更新#1
有人建议我将<reply-listener/> 添加到<rabbit:template/>,但我不确定如何以编程方式执行此操作:
@Bean
public RabbitTemplate rabbitTemplate() {
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory());
rabbitTemplate.setMessageConverter(jsonMessageConverter());
rabbitTemplate.setReplyQueue(responseQueue());
rabbitTemplate.setReplyTimeout(60000);
// following is private
//rabbitTemplate.addListener
return rabbitTemplate;
}
【问题讨论】:
-
我希望你没有使用 spring 1.2。
-
我已经为
org.springframework.amqp.spring-rabbit尝试了<version>1.1.4.RELEASE</version>和<version>1.2.0.BUILD-SNAPSHOT</version>这两个版本......但它们都有相同的行为。 -
我不是要回答你的问题。 Spring 现在是 3.2.3 版本,你真的不应该使用过时的库。
-
是的,我基于
spring-rabbit的依赖层次结构在3.1.x上,而且我没有任何理由跳到3.2.3没有充分的理由这样做。我认为文档 URL 可能让你失望了……文档 url 捕获了spring-rabbit的版本号,而不是 spring 本身。
标签: java rabbitmq amqp spring-amqp spring-rabbit