假设我们有两个应用程序A
和B
与他们自己的不同数据库A1
(MySQL)和B1
(Postgres)相对应。我们在应用A
中创建彼此关联的实体X
和Y
。 Y
属于X
。在每次向数据库A1
(提交后)插入时,我们发布消息给RabbitMQ以使应用B
知道全新的实体。每个实体一个事件 - X1
和Y1
。一切都很好,如果RabbitMQ保留消息的顺序,那么应用程序B
中的工作人员可以首先处理X1
,然后再处理Y1
,以建立数据库B1
中新A
和B
记录之间的正确关联。但据我了解,RabbitMQ不是用来保持消息的顺序,而是在非常特殊的情况下执行消息,例如在一个通道内发布,发送到一个交换机,推到一个队列,在一个通道内消耗。如何在RabbitMQ中的数据库之间发布数据更改?
所以我的问题是关于正确的方向和一般方法:
- 我应该选择另一条消息队列,可保证消息的顺序?
- 我错过了RabbitMQ消息订单细节中的具体内容吗?
- 我是否应该在应用程序
B
一侧实现某种重试机制,如果消息顺序不符合预期,这会将消息重新排入RabbitMQ?
也许它会给更明智的背景下 - B1
是数据仓库,它聚合不仅来自A1
数据,还包括其他的数据库。