我应该创建一些交换 Rabbitmq 吗?

Should I create some exchanges Rabbit MQ?

我的用例如下:我有几个用户,订阅了国家,换句话说,一个用户可以与一些国家有关。

因此,生产者向美国国家/地区发送消息,这意味着美国的订阅用户应该会收到此消息。像扇出型。

我在考虑 Rabbit MQ 代理中传输消息的架构。

所以,我认为创建相等数量的国家/地区的交易所是一种丑陋的方式。

而不是我想放置 一个交换 名称国家与一些队列绑​​定,一个国家一个队列。

然后在客户端确定用户订阅了哪些队列(国家/地区)。

延续:

如果有城市分配给国家,用户也订阅国家的城市怎么办?

我应该创建另一个交换器 cities 并从队列中监听消息吗?我可以直接从country exchange发送消息到city exchange吗?

方案是一个国家和一些相关城市:

Producer -> CountryExhange(USA) -> 
CityExchange(Washington) -> Queue (Washington) -> 
Consumes (USA, Washington)

通常,消息路由取决于正在处理的消息类型。因此,如果每个国家/地区都有自己的消息类型,那么一定要为每个国家/地区设置一个队列。否则,让消息消费者处理特定于国家/地区的逻辑。

编辑:

问题询问是否应该创建额外的交换。应该注意的是,交换器的工作是将发布的每条消息路由到一个或多个队列。标准交换类型是直接、主题和扇出。这些交换默认存在于新配置的 RabbitMQ 服务器中。因此,除非需要额外的交换类型,否则很少有情况下添加另一个交换是有意义的。