|
对于最新稳定版本,请使用Spring AMQP 4.0.0! |
容器与经纪人命名队列
虽然使用更理想匿名队列作为自动删除队列的实例,从2.1版本开始,你可以使用带有监听器容器的代理命名队列。以下示例展示了如何实现:
@Bean
public Queue queue() {
return new Queue("", false, true, true);
}
@Bean
public SimpleMessageListenerContainer container() {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(cf());
container.setQueues(queue());
container.setMessageListener(m -> {
...
});
container.setMissingQueuesFatal(false);
return container;
}
注意空的字符串为了名字。当兔子管理员声明队列,它会更新Queue.actualName经纪人回归的房产名称。你必须使用setQueues()当你配置容器使其能正常工作时,容器可以在运行时访问声明的名称。仅仅设置名称是不够的。
| 容器运行时不能向容器添加经纪人命名的队列。 |
当连接重置并建立新连接时,新队列会获得新名称。由于容器重启与队列重新声明之间存在竞争条件,设置容器的缺失队列致命属性到false,因为容器最初可能会尝试重新连接旧队列。 |