我正在寻找了解RabbitMq消息是否已被处理或存在于队列中的最佳方法。我有我的Web管理,它将消息发送到我的队列中,有大量的流量。我的应用程序在数据库中进行检查,在1分钟内,如果消费者在数据库中插入新的数据,但如果没有插入,应用程序会显示一个错误,即数据没有插入。问题是在高需求的情况下,延迟可以是一个很大的时间,数据可以插入后的延迟和Web管理的用户不知道数据是否被插入,用户可以尝试发送另一个消息到队列。我想知道这是否可行。检查是否有信息存在于队列中 或知道消息是否已处理。
最简单的答案......不,你不能,因为这违背了队列的架构。它的构建是为了把消息发布进去,并不断消耗它。
唯一的机会是,如果你只是和一个消费者一起工作,中断它,消耗所有的消息,然后把它们重新发布到队列中,并检查所需的消息是否被消耗。要知道,这将会把队列搞得一团糟!我认为更好的解决方案将是另一种。我认为更好的解决方案是另一个队列,你的消费者可以在自己的队列上发布一个 "完成 "的消息,你的原始发布者可以消耗这个消息。