我正在考虑将AMQP用于交付订单至关重要的应用程序。
因此,我不能使用正常的重新传递功能,因为未传递的消息会不按顺序重新排队。
看起来我必须做的是将消息留在队列中直到它被处理,然后专门删除它。然后可能会按顺序处理相同的消息两次,但这很容易陷阱和处理。
但是,我不知道该怎么做。我正在寻找的是某种偷看和删除消息方法,让我直接控制,但它们似乎不存在。
我错过了什么,或试图以错误的方式解决问题?
答案 0 :(得分:0)
您无法在AMQP中查看和删除。实际上,您无法在不消耗它们的情况下浏览队列中的消息,并且Rabbit不提供任何扩展来启用它。
对您的问题的一般回答是“如果您确实需要那个有序约束,请仔细考虑”,因为,例如,在该约束的情况下,您不能在队列中拥有多个使用者。
答案 1 :(得分:0)
我一直在解决同样的问题。在我的解决方案中,我将消息 消息 外部消息 首先处理和然后我已经处理 剩余的内部消息。这有一些缺点,例如大消息(一旦你的包装层次结构包含许多消息),更难以序列化......,但对我来说解决方案已经足够了。