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()不是用於刪除延遲連接的正確方法?如果是這樣的話,什麼是正確的使用方法?
謝謝。