对队列元素具有随机读/写访问权限的消息队列(rabbitmq或)

2024-09-28 03:23:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我通过amqplib在Python中使用rabbitmq。如果可能的话,我尝试将AMQP用于不仅仅是一个队列的事情——按ID搜索消息,在dequeing之前修改消息,在dequeing之前从队列中删除消息。这些东西用于存储/更新平衡器的真实用户队列,并且该队列可以通过更改真实用户的状态来异步更新(例如,用户已死亡-必须删除其AMQP消息,或者用户更改了其状态-并且每一个这样的更改都必须反映在用户的AMQP队列中,在相应用户的AMQP消息中),在消息真正出列之前。 我的问题如下:

  1. 有没有通过amqplib修改AMQP消息体的方法 一些人在它被释放之前排队,通过某个ID在 是头吗?我是说-我想修改邮件正文之前 由接收者发送。

  2. 有没有办法让一个工人跳出来 通过amqplib从queueN发出的最后5条消息(任意数量)?

  3. 我能在消息被删除之前从队列中异步删除消息吗 它的邻居会取代它的位置吗?

  4. 这是来自queueN的消息ID1的方法-获取它的真实性 当前队列位置,从队列开始算起? AMQP是否存储/更新其实际队列位置的任何消息?在

    提前谢谢。

更新:根据rabbitmq文档,这种对AMQP队列中消息的随机访问存在问题。请建议Python中另一个正确的队列决策,它支持对其元素的快速异步访问-按消息体搜索消息、更新/删除队列消息以及为任何队列消息获取快速队列索引。我们尝试了deque+additional dict与user_info一起使用,但是在本例中,我们需要在每次更新时锁定deque+dict,以避免竞争条件。主要目的-为负载平衡器的队列提供服务,并在计算队列中的更改时消除阻塞。在


Tags: 方法用户id消息amqp队列状态rabbitmq
1条回答
网友
1楼 · 发布于 2024-09-28 03:23:27

您所描述的听起来像是一个非常典型的中间件管道。虽然这可以达到在消息传递给目标消费者之前修改消息的相同效果,但是通过访问队列是行不通的。在

基本思想是,所有消息首先进入一个特殊队列,在队列中它们被传递到中间件。然后,该中间件根据它刚刚接收到的消息组成一个新消息,并将其发布到目标接收方的队列中

相关问题 更多 >

    热门问题