如何解决Spring Boot使Rabbit MQ连接超时
当尝试连接运行在单独主机/端口上的Rabbit MQ实例时,遇到此异常,该异常与使用者重新启动和超时有关
2020-08-22 10:23:25.189 INFO [events-to-slack,] 1057 --- [an)#6c74acb-100] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer: tags=[{}],channel=null,acknowledgeMode=AUTO local queue size=0
2020-08-22 10:23:25.203 ERROR [events-to-slack,] 1057 --- [an)#6c74acb-110] o.s.a.r.l.SimpleMessageListenerContainer : Failed to check/redeclare auto-delete queue(s).
org.springframework.amqp.AmqpIOException: java.net.SocketTimeoutException: connect timed out
at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:71)
at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:306)
at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:547)
at org.springframework.amqp.rabbit.core.RabbitTemplate.doExecute(RabbitTemplate.java:1389)
at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:1370)
at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:1346)
at org.springframework.amqp.rabbit.core.RabbitAdmin.getQueueProperties(RabbitAdmin.java:336)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.redeclareElementsIfNecessary(SimpleMessageListenerContainer.java:1128)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$800(SimpleMessageListenerContainer.java:99)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1304)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.SocketTimeoutException: connect timed out
我正在使用弹簧靴1.5.18。使用Java 1.8
这些是我为Rabbit-mq进行的配置设置,在这里我们可以看到它只是使用主题交换和绑定来设置带有Queue绑定的侦听器
@RequiredArgsConstructor
@Configuration
public class RabbitMQConfiguration implements RabbitListenerConfigurer {
private final Config configuration;
private final RetryConfiguration retryConfig;
@Bean
public TopicExchange exchange() {
return new TopicExchange(configuration.getExchange());
}
@Bean
public TopicExchange delayExchange() {
TopicExchange topicExchange = new TopicExchange(configuration.getDelayExchange());
topicExchange.setDelayed(true);
return topicExchange;
}
@Bean
public Queue queue() {
return new Queue(configuration.getQueue());
}
@Bean
public List<Binding> bindings(@Qualifier("exchange") TopicExchange exchange,@Qualifier("delayExchange") TopicExchange delayExchange,@Qualifier("queue") Queue queue) {
List<Binding> binding = new ArrayList<>();
for (String routingKey : configuration.getRoutingKeys()) {
binding.add(BindingBuilder.bind(queue).to(exchange).with(routingKey));
binding.add(BindingBuilder.bind(queue)
.to(delayExchange)
.with(retryConfig.getPrefix() + routingKey));
}
return binding;
}
@Bean
public MessageConverter jsonMessageConverter() {
return new Jackson2JsonMessageConverter();
}
@Bean
public MappingJackson2MessageConverter consumerJackson2MessageConverter() {
return new MappingJackson2MessageConverter();
}
@Bean
public DefaultMessageHandlerMethodFactory messageHandlerMethodFactory() {
DefaultMessageHandlerMethodFactory factory = new DefaultMessageHandlerMethodFactory();
factory.setMessageConverter(consumerJackson2MessageConverter());
return factory;
}
@Override
public void configureRabbitListeners(RabbitListenerEndpointRegistrar endpointRegistrar) {
endpointRegistrar.setMessageHandlerMethodFactory(messageHandlerMethodFactory());
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。