TopicExchanger 不发送到所有队列
TopicExchanger not sending to all queues
在我的 RabbitMQ 中,我有一个名为 room-topic-exchange
的主题交换器,绑定是这样的
当我使用交换器向特定队列发送消息时,一切正常。我发送如下:
template.convertAndSend(ROOM_TOPIC_EXCHANGE, roomId, message);
但是当我尝试发送到所有队列时,没有任何反应。我正在尝试这样
template.convertAndSend(ROOM_TOPIC_EXCHANGE, "room*", message);
我声明交换器和绑定如下
TopicExchange allRooms = new TopicExchange(ROOM_TOPIC_EXCHANGE, false, true);
admin.declareExchange(allRooms);
admin.declareBinding(BindingBuilder.bind(q).to(allRooms).with(roomId));
我看不出我做错了什么。我阅读了文档,并尝试使用路由密钥 room#
也没有任何反应。
主题交换不是这样的;你用通配符绑定,你不在路由键中使用通配符。
与 room.*
绑定的队列会将消息发送到 room.123
或 room.124
。
您可以通过向每个房间添加第二个绑定来实现您想要的效果,比如 room.splat
;然后发送到 room.splat
将转到两个队列。
或者,您可以添加第二个 fanout
交易所。将两个队列绑定到两个交换器(扇出不需要路由键)并将广播发送到扇出交换器并将消息定向到主题。
在我的 RabbitMQ 中,我有一个名为 room-topic-exchange
的主题交换器,绑定是这样的
当我使用交换器向特定队列发送消息时,一切正常。我发送如下:
template.convertAndSend(ROOM_TOPIC_EXCHANGE, roomId, message);
但是当我尝试发送到所有队列时,没有任何反应。我正在尝试这样
template.convertAndSend(ROOM_TOPIC_EXCHANGE, "room*", message);
我声明交换器和绑定如下
TopicExchange allRooms = new TopicExchange(ROOM_TOPIC_EXCHANGE, false, true);
admin.declareExchange(allRooms);
admin.declareBinding(BindingBuilder.bind(q).to(allRooms).with(roomId));
我看不出我做错了什么。我阅读了文档,并尝试使用路由密钥 room#
也没有任何反应。
主题交换不是这样的;你用通配符绑定,你不在路由键中使用通配符。
与 room.*
绑定的队列会将消息发送到 room.123
或 room.124
。
您可以通过向每个房间添加第二个绑定来实现您想要的效果,比如 room.splat
;然后发送到 room.splat
将转到两个队列。
或者,您可以添加第二个 fanout
交易所。将两个队列绑定到两个交换器(扇出不需要路由键)并将广播发送到扇出交换器并将消息定向到主题。