0
相关SimpleMessageListenerContainer一样关闭连接我目前工作的一个基于事件的异步AMQP消息监听器,像这样:在Spring AMQP
@Configuration
public class ExampleAmqpConfiguration {
@Bean(name = "container")
public SimpleMessageListenerContainer messageListenerContainer() {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(rabbitConnectionFactory());
container.setQueueName("some.queue");
container.setMessageListener(exampleListener());
return container;
}
@Bean
public ConnectionFactory rabbitConnectionFactory() {
CachingConnectionFactory connectionFactory =
new CachingConnectionFactory("localhost");
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest");
return connectionFactory;
}
@Bean
public MessageListener exampleListener() {
return new MessageListener() {
public void onMessage(Message message) {
System.out.println("received: " + message);
}
};
}
}
我已经容器bean的AutoStart属性更改为false。我已经自动连接这个bean将事件利斯特时StartEvent发生启动容器:
@EventListener
public void startContainer(StartEvent startEvent) {
this.container.start();
}
与此同时,我也自动装配豆到停止容器和关闭容器的另一事件,希望容器将被停止,并且不会有挥之不去的连接:
@EventListener
public void endContainer(EndEvent endEvent) {
this.container.stop();
this.container.shutdown();
}
然而,ENDEVENT后,我发现在我的RabbitMQ的管理控制台,所有通道被关闭,但仍有一个挥之不去的连接。
这是否意味着shutdown()不是用于删除延迟连接的正确方法?如果是这样的话,什么是正确的使用方法?
谢谢。