多个消费者和生产者连接到一个消息队列,这在AMQP中可能吗?

2024-04-25 11:37:25 发布

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

我想创建一个能够OCR文本的进程场。 我考虑过使用一个由多个OCR进程读取的消息队列。在

我希望确保:

  • 队列中的每条消息最终都会被处理
  • 这项工作或多或少是平均分配的
  • 一个图像将只被一个OCR进程解析
  • OCR进程不会同时获取多条消息(因此任何其他免费OCR进程都可以处理该消息)。在

使用AMQP可以做到吗?在

我计划使用python和rabbitmq


Tags: 图像文本消息amqp队列进程rabbitmq计划
2条回答

是的,正如@nailxx指出的。AMQP编程模型与JMS稍有不同,因为您只有队列,这些队列可以在工人之间共享,或者由单个工人单独使用队列。您还可以轻松地设置RabbitMQ来执行PubSub用例或JMS中称为topics的事情。请转到我们的Getting Started页面,在RabbitMQ web site上找到大量有用的信息。在

现在,对于你的用例来说,已经有很多可用的工具了。人们经常使用并且得到很好支持的是Celery。这里有一个关于它的blog post,我想它可以帮助你开始:

如果您有任何问题,请给我们发电子邮件或张贴到rabbitmq讨论邮件列表。在

是的,有可能。服务器集群为一个实时的MMO游戏我正在工作这样操作。我们使用ActiveMQ,但我认为RabbitMQ也可以实现这一切。在

你提到的所有东西都要从箱子里拿出来,除了最后一件。在

  • 队列中的每个消息最终都会被处理—这是消息代理的主要职责之一
  • 这项工作或多或少是平均分配的(这是另一项:)
  • 一个图像将只由一个OCR进程解析—为此存在/topic和/queue的区别。主题就像广播信号,队列就是任务。在您的场景中需要一个/队列

为了使最后一个以期望的方式工作,使用者在订阅队列时发送特定于AMQ的参数:

activemq.prefetchSize: 1

此设置可确保使用者在收到一条消息之后,直到它向AMQ发送一条ack之前不会再接收任何消息。我相信RabbitMQ中也存在类似的情况。在

相关问题 更多 >