我是Spring-rabbitMQ的新手 . 我有以下问题 . 如果错了,请更正:
我有三个应用实例 .
Instance1 Instance2 Instance3
注意:这些实例不需要是固定的数字 . 所有这些实例都听同一个交换 . 由于实例数量不固定,我的要求是所有三个/(数字可以)变量收到的相同消息 . 如何使用spring-amqp实现这一目标
如果声明队列名称和绑定交换消息将在实例之间拆分..但我想要rabbitmq消息(来自交换的消息)到所有队列..我们怎么能实现这一点..我听到一些像匿名队列的事情 . ..
如何在Spring中以编程方式实现此方法,而不是通过xml声明并使用SPEL声明队列ID
步骤1:创建连接工厂步骤2:创建交换步骤3:创建队列步骤4:创建AMQP管理员然后声明该队列步骤5:绑定队列以进行交换
同样在停止实例时,队列应该被自动删除..应该在post-construct中给出?
目前的代码如下:
CachingConnectionFactory cf = new CachingConnectionFactory("192.168.1.10", 5672);
RabbitAdmin admin = new RabbitAdmin(cf);
FanoutExchange testExchange = new FanoutExchange("testExchange", true, false);
admin.declareExchange(testExchange);
Queue testQueue = new Queue("testQueue", true, false, true);
admin.declareQueue(testQueue);
admin.declareBinding(BindingBuilder.bind(testQueue).to(testExchange));
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(cf);
container.setRabbitAdmin(admin);
container.setQueues(testQueue);
container.setMessageListener(new MessageListenerAdapter() {
public void handleMessage(String text) {
System.out.println("Received : " + text);
}
});
container.afterPropertiesSet();
container.start();
1 回答
您使用
autodeleted
队列正确,但它们可能不是anonymous
,尽管每个实例可能是唯一的 .这里的主要功能是
Fanout Exchange
. 确切地说,此Exchange能够向所有订阅(绑定)队列发送相同的消息 .您可以在RabbitMQ Tutorial中找到更多信息 .