使用Spring Boot应用程序的RabbitMQ集群节点故障

问题描述

我有一个Spring Boot应用程序,该应用程序连接到RabbitMQ集群(作为Cloud Foundry中的一项服务)。当群集中的主节点发生故障时,由于某种原因该节点无法启动,但是应用程序(消息使用者)尝试连接至故障节点,并且不尝试连接至其他可用节点。有人可以建议一些弹簧配置来解决此问题吗?

17:36:23.829: [APP/PROC/WEB.0] Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404,reply-text=NOT_FOUND - home node '[email protected]' of durable queue 'FAILED_ORDER' in vhost '/' is down or inaccessible,class-id=50,method-id=10)

'[email protected]'是失败的节点。

为了在失败时继续尝试连接到节点,我具有以下spring配置。 spring.rabbitmq.listener.simple.missing-queues-fatal = false

@Configuration
public class MessageConfiguration {

public static final String FAILED_ORDER_QUEUE_NAME = "FAILED_ORDER";

public static final String EXCHANGE = "directExchange";

@Bean
public Queue failedOrderQueue(){
    return new Queue(FAILED_ORDER_QUEUE_NAME);
}

@Bean
public DirectExchange directExchange(){
    return new DirectExchange(EXCHANGE,true,false);
}

@Bean
public Binding secondBinding(Queue failedOrderQueue,DirectExchange directExchange){
    return BindingBuilder.bind(failedOrderQueue).to(directExchange).with(FAILED_ORDER_QUEUE_NAME);
}

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)