使用MessageBroker进行数据库复制(当前为rabbitmq)

vecaoik1  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(253)

当我的系统的数据发生变化时,我会将每一个变化发布给至少4个不同的使用者(大约每秒3000条消息),所以我想使用消息代理。
大多数使用者都负责用更改来更新他们的数据库表。
(dbs是不同的-couch、mysql等,因此使用自己的复制机制或使用db触发器等解决方案是不可能的)问题
有人有使用消息代理在dbs之间进行数据复制的经验吗?
这是个好习惯吗?
万一失败了我该怎么办?
比方说,使用rabbitmq,客户机从队列中删除了10000条消息,在处理它们之前,每次都会确认并抛出一个异常。现在他们迷路了。有办法回到队伍里吗?
(重新排队会扰乱他们的秩序)。
使用rabbitmq是一种好的做法吗?像Kafka那样回到队列中的能力对失败不是很重要吗?
谢谢。

os8fio9y

os8fio9y1#

我没有使用消息代理进行数据库复制的经验,但这可能有助于您走上正确的道路:

2. 万一失败了我该怎么办?

比方说,使用rabbitmq,客户机从队列中删除了10000条消息,在处理它们之前,每次都会确认并抛出一个异常。现在他们迷路了。有办法回到队伍里吗?
你可以使用死信来避免丢失信息。我建议不要确认,除非这是一个长期运行的任务,除非你确定消费者已经成功地处理了他们。如果发生故障, basic.reject 而不是 basic.ack 把他们送到死信队列。你的吞吐量中等,所以要小心。
不过,这一订单并不能保证。您需要实现一种手动机制,以按发布顺序恢复它们,可以使用带有某种时间戳或id机制的消息头,以正确的顺序重新处理它们。

相关问题