2017-08-19 11 views
0

私はRabbitMQにはかなり新しく、RabbitMQから複数のメッセージを消費したいので、俳優がタスクを終了したときにのみ承認を送ることができます。緩んでいないメッセージとして。私はどのように進めるべきですか、私はAKKAに春のサポートを使いたいと思います。AKKAの俳優とJavaのRabbitMQから複数のメッセージを消費する

アクターをコンシューマーとして使用することはできますか、それともメッセージの受信確認を送信せずに複数のメッセージを消費できるプレーンコンシューマーであることができますか?アクターを呼び出すよりも一度に1つのメッセージを送信することができます(ただし、AKKAモデルを介してアクターや並列処理が行われていないかのようになります)。

答えて

0

私はRabbitMQのそれ自体で働いていないが、私はおそらくそれだろう、ディスパッチャと1人の俳優を指定します:

  1. ハンドルのRabbitMQ接続。
  2. メッセージを受信します(1つ1つまたはバッチで効率的であれば問題ありません)。
  3. メッセージごとに新しいワーカーを作成するか、あらかじめ作成されたワーカーのプールにメッセージを送信して、ワーカーアクタ間で作業を分散します。
  4. タスクが完了し、結果がコミットされた後、作業者からの確認を受信し、承認をRabbitMQに送り返します。肯定応答トークンは作業者のタスクの一部として含めることができるため、ディスパッチャ内のマッピングを追跡する必要はありません。

考慮すべきいくつかの追加のものがある:

  • 監督の戦略:ディスパッチャを監督?誰が労働者を監督していますか?彼らが墜落したらどうなりますか?
  • 分散環境で実行している場合、メッセージは再送信されます。
関連する問題