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.123room.124

您可以通过向每个房间添加第二个绑定来实现您想要的效果,比如 room.splat;然后发送到 room.splat 将转到两个队列。

或者,您可以添加第二个 fanout 交易所。将两个队列绑定到两个交换器(扇出不需要路由键)并将广播发送到扇出交换器并将消息定向到主题。