我想创建一个能够OCR文本的进程场 . 我曾考虑使用由多个OCR进程读取的单个消息队列 .
我想确保:
最终处理队列中的每条消息
工作或多或少均匀分布
只能通过一个OCR进程解析图像
OCR进程不会立即获得多条消息(因此任何其他免费OCR进程都可以处理该消息) .
使用AMQP可以吗?
我打算用python和rabbitmq
是的,那是可能的 . 用于实时MMO游戏的服务器集群我正在以这种方式运行 . 我们使用ActiveMQ,但我认为RabbitMQ也可以实现这一切 .
您提到的所有项目都是开箱即用的,除了最后一项 .
最终处理队列中的每条消息 - 这是消息代理的主要职责之一
工作或多或少均匀分布 - 这是另一个:)
图像将仅由一个OCR进程解析 - 为此存在/ topic和/ queue的区别 . 主题就像广播信号,队列是任务 . 您的方案中需要/ queue
为了使最后一个以期望的方式工作,消费者在订阅队列时发送特定于AMQ的参数:
activemq.prefetchSize: 1
此设置可确保消费者在收到消息后不再接收任何消息,直到它将 ack 发送到AMQ . 我相信RabbitMQ中存在类似的东西 .
ack
是的,正如@nailxx指出的那样 . AMQP编程模型与JMS略有不同,因为您只有队列,可以在工作人员之间共享,也可以由单个工作人员私下使用 . 您还可以轻松设置RabbitMQ以执行PubSub用例或JMS中的内容称为主题 . 请访问RabbitMQ web site上的Getting Started页面,找到大量有用的信息 .
现在,特别是对于您的用例,已经有很多工具可用 . 一个人们正在使用很多,而且得到很好支持的是Celery . 这是关于它的blog post,我认为这将有助于您入门:
如果您有任何疑问,请给我们发电子邮件或发送到rabbitmq-discuss邮件列表 .
2 回答
是的,那是可能的 . 用于实时MMO游戏的服务器集群我正在以这种方式运行 . 我们使用ActiveMQ,但我认为RabbitMQ也可以实现这一切 .
您提到的所有项目都是开箱即用的,除了最后一项 .
最终处理队列中的每条消息 - 这是消息代理的主要职责之一
工作或多或少均匀分布 - 这是另一个:)
图像将仅由一个OCR进程解析 - 为此存在/ topic和/ queue的区别 . 主题就像广播信号,队列是任务 . 您的方案中需要/ queue
为了使最后一个以期望的方式工作,消费者在订阅队列时发送特定于AMQ的参数:
此设置可确保消费者在收到消息后不再接收任何消息,直到它将
ack
发送到AMQ . 我相信RabbitMQ中存在类似的东西 .是的,正如@nailxx指出的那样 . AMQP编程模型与JMS略有不同,因为您只有队列,可以在工作人员之间共享,也可以由单个工作人员私下使用 . 您还可以轻松设置RabbitMQ以执行PubSub用例或JMS中的内容称为主题 . 请访问RabbitMQ web site上的Getting Started页面,找到大量有用的信息 .
现在,特别是对于您的用例,已经有很多工具可用 . 一个人们正在使用很多,而且得到很好支持的是Celery . 这是关于它的blog post,我认为这将有助于您入门:
如果您有任何疑问,请给我们发电子邮件或发送到rabbitmq-discuss邮件列表 .