【发布时间】:2013-01-08 03:20:29
【问题描述】:
我是 Spring Framework 的新手,我的问题如下:
我想以编程方式实例化DefaultMessageListenerContainer,我使用的代码是:
DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
container.setConnectionFactory(cf);
container.setDestination(Queue);
container.setMessageListener(Consumer);
container.setReceiveTimeout(-1);
container.setMaxConcurrentConsumers(15);
container.setConcurrentConsumers(10);
container.start();
为什么在取消部署我的项目时必须手动关闭DefaultMessageListenerContainer?如果我不手动关闭容器,消费者在我的队列中保持打开状态。
当我尝试手动关闭容器(通过调用container.shutdown())时,程序卡住并且项目无法继续。
如果我初始化DefaultMessageListenerContainer 而不给出receiveTimeout,则正确执行关机程序。 setReceiveTimeout(-1)有问题吗?
【问题讨论】: