我想创建一个能够OCR文本的进程场.
我曾考虑使用由多个OCR进程读取的单个消息队列.
我想确保:
>最终处理队列中的每条消息
>工作或多或少平均分配
>图像只能由一个OCR进程解析
> OCR进程不会立即获得多条消息(因此任何其他免费OCR进程都可以处理该消息).
使用AMQP可以吗?
我打算用python和rabbitmq
解决方法:
是的,这是可能的.用于我正在进行的实时MMO游戏的服务器集群以这种方式运行.我们使用ActiveMQ,但我认为RabbitMQ也可以实现这一切.
您提到的所有项目都是开箱即用的,除了最后一项.
>最终处理队列中的每条消息 – 这是消息代理的主要职责之一
>工作或多或少均匀分布 – 这是另一个:)
>图像将仅由一个OCR进程解析 – 为此存在/ topic和/ queue的区别.主题就像广播信号,队列是任务.您的方案中需要/ queue
为了使最后一个以期望的方式工作,消费者在订阅队列时发送特定于AMQ的参数:
activemq.prefetchSize: 1
此设置可确保消费者在收到消息后不再接收任何消息,直到它向AMQ发送确认消息.我相信RabbitMQ中存在类似的东西.