我使用rabbitmq来协调服务集合之间的事件,如下所示:
用户管理器
-
发射
user.collect
当它希望从单独的服务收集用户数据时
-
倾听
user.collected
由单独的服务发出
用户收集器
-
倾听
用户.collect
当它应该收集一些用户数据时,
-
发射
用户已收集
当它收集数据的时候。
还有其他服务可以监听
-
user.created
,
-
user.updated
,
-
user.deleted
此外,还有一些服务可以监听更一般的事件,如
等等。
所以我用的是
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