社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  MQ

rabbitmq–为什么在使用主题交换时忽略我的路由密钥

Dave Sag • 5 年前 • 1032 次点击  

我使用rabbitmq来协调服务集合之间的事件,如下所示:

用户管理器

  • 发射 user.collect 当它希望从单独的服务收集用户数据时
  • 倾听 user.collected 由单独的服务发出

用户收集器

  • 倾听 用户.collect 当它应该收集一些用户数据时,
  • 发射 用户已收集 当它收集数据的时候。

还有其他服务可以监听

  • user.created ,
  • user.updated ,
  • user.deleted

此外,还有一些服务可以监听更一般的事件,如

  • #.created
  • user.#

等等。

所以我用的是 topic 交换。

我的设置如下

| exchange | type  | queue           | routingKey     |
| -------- | ----- | --------------- | -------------- |
| MY_APP   | topic | USER_COLLECTION | user.collect   |
| MY_APP   | topic | USER_COLLECTION | user.collected |

所有的服务都是通过 MY_APP

用户管理器创建一个生产者,该生产者发出 用户.collect 事件到 MyIAPP 与…交换 routingKey 用户.collect ,并创建一个侦听队列的使用者 USER_COLLECTION 对于具有routingkey的事件 用户已收集

用户收集器创建一个生产者,该生产者发出 用户已收集 事件到 MyIAPP 与routingkey交换 用户已收集 它创建了一个消费者来监听队列 用户集合 对于具有routingkey的事件 用户.collect

但是我发现用户管理器发出 用户.collect 这是由用户管理器自己和 用户已收集 .

好像路由密钥被忽略了。我做错什么了?

更新

follow up question

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39763
 
1032 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Giri Chintala
Reply   •   1 楼
Giri Chintala    6 年前

为每个使用者创建不同的队列,并使用适当的绑定密钥user.collect或user.collected将队列绑定到主题交换。

  1. 将传递消息排队到它的一个使用者,而不是所有使用者。
  2. 消息根据其到topc交换的绑定密钥路由到队列。

请检查此链接以获取更详细的示例。 https://www.rabbitmq.com/tutorials/tutorial-five-python.html