我正在尝试使用RabbitMQ从一个应用程序发布消息并在另一个应用程序中接收它们 . 这些应用程序托管在Cloud Foundry上,并且两者都绑定到RabbitMQ的同一个实例 .
我可以从第一个应用程序发送消息到队列,但在我的第二个应用程序中,它使用@RabbitListener和@RabbitHandler来侦听此队列,我收到连接被拒绝错误 . 它虽然在我的本地RabbitMQ实例上运行良好 .
消费者引发异常,如果连接工厂支持,则处理可以重新启动 . 异常摘要:org.springframework.amqp.AmqpConnectException:java.net.ConnectException:错误:111(连接被拒绝),错误:连接被拒绝(本地端口45596到地址127.0.0.1(本地主机),远程端口5672到地址127.0.0.1 (本地主机))
这是完整的日志 .
我观察到,远程端口在5672处保持不变,但本地端口不断从日志更改为日志 . 我不确定这些端口是从哪里拿起的,因为我认为Spring应该为我处理这个,并且因为我的第一个应用程序有类似的设置,这似乎工作正常 .
以下是我的配置的外观 -
@Bean
public MessageConverter jsonMessageConverter(){
return new Jackson2JsonMessageConverter();
}
@Bean
public AmqpAdmin amqpAdmin(ConnectionFactory connectionFactory) {
return new RabbitAdmin(connectionFactory);
}
@Bean
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
rabbitTemplate.setMessageConverter(jsonMessageConverter());
return rabbitTemplate;
}
@Bean
public SimpleMessageListenerContainer messageListenerContainer(ConnectionFactory rabbitConnectionFactory) {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(rabbitConnectionFactory);
container.setQueueNames("queue2911");
container.setAutoStartup(false);
//container.setMessageListener(exampleListener());
return container;
}
任何帮助,将不胜感激 .
1 回答
操作系统选择本地端口 .
您尝试连接到
localhost
的事实意味着您正在使用具有默认值(localhost:5672)的连接工厂而不是引导配置的工厂 .打开两个应用程序的DEBUG日志记录并比较自动配置报告 .