我通过amqplib在Python中使用rabbitmq。我尝试将AMQP用于不仅仅是一个队列的事情,如果可能的话 - 按ID搜索消息,在出队之前修改它们,在出队之前从队列中删除。这些东西用于存储/更新平衡器的真实用户队列,并且可以通过更改真实用户的状态来异步更新该队列(例如,用户已经死了 - 他的AMQP消息必须被删除,或者用户更改了它的状态 - 并且每一次这样的改变都必须反映在用户的AMQP队列中,适当的用户的AMQP消息中),并且在真正的出队消息发生之前。 我的问题有以下几点:带队列元素随机读取写入访问的消息队列(rabbitmq或)
是否有通过amqplib办法修改AMQP消息体中 一些queueN将它dequed之前,在 一些ID搜索它,它的头?我的意思是 - 我想修改邮件正文 由接收方调度它。
有没有办法让工作人员通过amqplib弹出 excactly 5(任意数量)来自queueN的最后一条消息?
我可以异步删除队列N中的消息,然后它将 dequed,它的邻居会把它放在queueN?
哪个是queueN中消息ID1的方法 - 获取它是真实的 当前队列的位置,从队列的起始点开始计数N? AMQP是否存储/更新任何消息是真正的队列位置?
在此先感谢。
更新:根据rabbitmq文档,这种随机访问AMQP队列中的消息存在问题。请告知另一个Python正确的队列决定,它支持对它的元素进行快速异步访问 - 通过正文搜索消息,更新/删除队列消息,并获取任何队列消息的快速队列索引。我们用user_info尝试了deque + additional dict,但在这种情况下,我们需要在每次更新时锁定这个deque + dict,以避免竞争条件。主要目的 - 服务负载平衡器的队列并在计算队列中的更改时排除阻塞。