我通过消费rabbitmq中的数据来保存数据库,我使用的是symfony框架。 我有一个这样的问题。 数据从RabbitMQ发送到应用程序后,rabbitMQ服务器被杀死。此处,由于数据仍处于 peded 模式,因此将其添加回队列,但由于数据已发送到应用程序,因此会记录数据库。当 RabbitMQ 服务器启动时,相同的数据将返回到应用程序并再次记录。如何摆脱重复的过程
这就是消费者致谢的用途。
当节点向消费者传递消息时,它必须决定该消息是否应被视为由消费者处理(或至少接收)。
[...]
根据所使用的确认模式,RabbitMQ 可以在发送消息(写入 TCP 套接字)后立即或在收到显式(“手动”)客户端确认时认为消息已成功传递。
由您决定在应用程序中的哪个点考虑消息“已处理” - 可以是应用程序收到消息后立即,也可以是在消息完全保存到数据库后。
如果您担心确认本身可能会失败,您可以与数据库事务结合使用:
这样,如果第 3 步或第 4 步出现问题,消息将在 RabbitMQ 中待处理,并且数据库没有数据。