我负责维护用Golang编写的生产软件,该软件使用RabbitMq作为其消息队列 请考虑以下情况:
许多goroutine正在发布到队列名称 logs 。
另一组goroutines从队列中读取并将消息写入MongoDB集合。
autoAck
,exclusive
和noWait
都设置为false,prefetch
设置为20,global
设置为false
通道。 autoDelete
,exclusive
所有队列都是持久的
并且noWait
都设置为false。基本假设是队列中的每条消息都将传递给一个且只有一个消费者,因此每条消息都会在数据库中插入一次。
问题是MongoDB集合中有重复的消息
我想知道是否有多个消费者获得相同的消息导致他们插入重复项?
答案 0 :(得分:1)
我可以在您的设置中看到一个案例,其中消息将被多次处理,如果其中一个消费者在某个时刻出现问题。 情况将遵循这样的情况:
此类案例应在您的消费者日志中显示一些错误。