メッセージキューに接続されている複数の消費者と生産者は、AMQPで可能ですか?
-
23-09-2019 - |
質問
OCRテキストができるプロセスの農場を作成したいと思います。複数のOCRプロセスによって読まれるメッセージの単一のキューを使用することを考えました。
私はそれを確実にしたいと思います:
- キュー内の各メッセージは最終的に処理されます
- 作業は多かれ少なかれ均等に分配されています
- 画像は1つのOCRプロセスによってのみ解析されます
- OCRプロセスでは、複数のメッセージを一度に取得しません(そのため、他の無料のOCRプロセスがメッセージを処理できるように)。
AMQPを使用することは可能ですか?
PythonとRabbitmqを使用する予定です
解決
はい、それは可能です。リアルタイムMMOゲームのサーバークラスター私はこのように動作しています。 ActiveMQを使用していますが、RabbitMQでもこれがすべて可能だと思います。
あなたが言及したすべてのアイテムは、最後のものを除く箱から出ます。
- キュー内の各メッセージは最終的に処理されます - これはメッセージブローカーの主な責任の1つです
- 作業は多かれ少なかれ均等に分配されています - これは別のものです:)
- 画像は1つのOCRプロセスによってのみ解析されます - これには /トピックと /キューの区別が存在します。トピックはブロードキャスト信号のようなもので、キューはタスクです。シナリオでは /キューが必要です
最後の1つの作業を希望の方法で行うために、消費者はキューを購読する際にAMQ固有の引数を送信します。
activemq.prefetchSize: 1
この設定では、消費者がそれ以上のメッセージを受け取った後、そしてそれが送信するまでそれ以上のメッセージを受け取らないことを保証します ack
amqへ。 rabbitmqには似たようなものが存在すると思います。
他のヒント
はい、@nailxxが指摘しているように。 AMQPプログラミングモデルはJMSとわずかに異なります。 キュー, 、労働者間で共有するか、使用することができます 個人的に 一人の労働者によって。 rabbitmqを簡単に設定することもできます pubsub ユースケースまたはJMSの内容が呼ばれています トピック. 。私たちに行ってください 入門 のページ Rabbitmq Webサイト これに関する有益な情報をたくさん見つけるために。
現在、特にあなたのユースケースのために、すでにたくさんのツールが利用可能です。人々が多くを使用しており、それが十分にサポートされているものは、 セロリ. 。がここにあります ブログ投稿 それについて、私はあなたが始めるのに役立つと思います:
ご質問がある場合は、メールを送信するか、Rabbitmq-Discussメーリングリストに投稿してください。