使用 RabbitMQ 互连应用程序

问题描述

我有以下场景:

三个应用需要同步一些实体的数据。例如,如果用户在 app1 中修改了客户的某些数据,则这些更改需要同步到 app2 和 app3。如果app2 中也出现同样的情况,则需要将数据同步到app1 和app3。 app3 也一样。

我为 RabbitMQ 设计了一个拓扑,每个实体一个交换。因此,例如,我使用路由键(如“entity.event”)直接交换客户实体。事件是创建和更新。我为生态系统中涉及的每个应用程序和每个事件创建了一个队列。我的客户实体队列表如下: queue.create.app1,queue.create.app2,queue.create.app3...;所有队列都绑定到客户交换机。如果 app1 使用路由键 customer.create 生成消息,则交换器会将消息传递到队列:queue.create.app1、queue.create.app2、queue.create.app3。每个应用程序都有一个操作系统进程,该进程为与此应用程序相关的每个队列消耗消息并执行操作(在应用程序中创建/更新)

现在,我产生了怀疑,因为如果 app1 生成消息来更新客户,我不需要 app1 队列中的消息。我想在消息中使用 'app-id' 属性来验证哪个应用程序发起消息并在消费者与生产者是同一个应用程序时丢弃它。

在这种情况下是否有最佳实践?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)