Is there any option to set AutomaticRecoveryEnabled in RabbitMQ using Spring-AMQP?

蹲街弑〆低调 提交于 2020-01-04 02:45:14

问题


Getting stocked while doing with RabbitMQ using Spring-AMQP.

Just need to get a way to configure AutomaticRecoveryEnabled and NetworkRecoveryInterval using Spring-AMQP. There is a direct option to set these flages if you you developing using native RabbitMQ library. But i didn't find a workaround to do the same using spring

Using RabbitMQ Native library(don't need any help)

factory.setAutomaticRecoveryEnabled(true);
factory.setNetworkRecoveryInterval(10000);

Using Spring-AMPQ(need help)

Like above i didn't find any such method while trying with Spring-AMPQ. This is what i am doing now.

@Bean(name="listener")
public SimpleMessageListenerContainer listenerContainer() 
{
    SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
    container.setConnectionFactory(connectionFactory());
    container.setQueueNames(env.getProperty("mb.queue"));
    container.setMessageListener(new MessageListenerAdapter(messageListener));
    return container;
}

Any help in this regards is highly appreciable. Thanks in advance.


回答1:


Just to clarify; Spring AMQP is NOT compatible with automaticRecoveryEnabled.

It has its own recovery mechanisms and has no awareness of the underlying recovery being performed by the client. This leaves dangling connection(s) and Channel(s).

I am working on a temporary work-around that will make it compatible (but will effectively disable the client recovery of any connections/channels used by Spring AMQP, while leaving the client recovery in place for other users of the same connection factory.

A longer term fix will require a major rewrite of the listener container to utilize the client recovery code instead.




回答2:


Well, CachingConnectionFactory has another costructor to apply a com.rabbitmq.client.ConnectionFactory.

So, it just enough to cofigure the last one as a an additional @Bean with appropriate options and inject it to the CachingConnectionFactory.



来源:https://stackoverflow.com/questions/25175448/is-there-any-option-to-set-automaticrecoveryenabled-in-rabbitmq-using-spring-amq

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!