繁体   English   中英

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

[英]Multiple consumers & producers connected to a message queue, Is that possible in AMQP?

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

我想确保:

  • 队列中的每条消息最终都会被处理
  • 工作或多或少地平均分配
  • 图像将仅由一个OCR进程解析
  • OCR进程不会立即获得多条消息(因此任何其他免费的OCR进程都可以处理该消息)。

使用AMQP可以吗?

我打算用python和rabbitmq

是的,正如@nailxx指出的那样。 AMQP编程模型与JMS略有不同,因为您只有队列 ,可以在工作人员之间共享,也可以由单个工作人员私下使用。 您还可以轻松设置RabbitMQ以执行PubSub用例或JMS中的内容称为主题 请访问RabbitMQ网站上的“ 入门”页面,查找大量有用的信息。

现在,特别是对于您的用例,已经有很多工具可用。 人们正在大量使用并得到很好支持的是Celery 这是一篇关于它的博客文章 ,我认为这将有助于您入门:

如果您有任何疑问,请给我们发电子邮件或发送到rabbitmq-discuss邮件列表。

是的,这是可能的。 用于我正在进行的实时MMO游戏的服务器集群以这种方式运行。 我们使用ActiveMQ,但我认为RabbitMQ也可以实现这一切。

您提到的所有项目都是开箱即用的,除了最后一项。

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

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

activemq.prefetchSize: 1

此设置可确保消费者在收到消息后不再接收任何消息,直到它向AMQ发送ack消息。 我相信RabbitMQ中存在类似的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM