ActiveMQ に関して: 小さな (約 10KB) ファイルをコンシューマーに送信するプロデューサーが 1 つあるシナリオがあります。ファイルは小さいですが、コンシューマーがそれらを分析して結果をプロデューサーに返すのに約 10 秒かかります。私は多くのことを調査しましたが、次の質問に対する答えはまだ見つかりません。
- ブローカーがファイルを (完全に) キューに保管するようにするにはどうすればよいですか?
- ObjectMessage (ファイルが小さいため) または blob メッセージを使用する必要がありますか?
- コンシューマーの処理が遅いため、prefetchLimit を下げるか、ラウンドロビン ディスパッチ ポリシーを使用する必要がありますか? どちらの方がよいですか?
- 最後に、ActiveMQ FAQ で、「コンシューマーがメッセージを受信し、閉じる前にそれを確認しない場合、メッセージは別のコンシューマーに再配信されます。」を読みました。ここでの私の質問は、ActiveMQ は 1 つのコンシューマーのみがメッセージを処理することを保証するか (したがって、プロデューサーへの回答は 1 つだけになるか) ですか? コンシューマーがメッセージを確認するのはいつですか (デフォルトの自動確認設定) - メッセージを受信してセッションに保存するとき、または onMessage ハンドラーが終了するとき? また、消費者の処理が非常に遅いため、「タイムアウト制限」を変更して、ブローカーが別の消費者に作業を渡す前にどれだけ待機する必要があるかを知る必要があります (これは私の以前の質問に関連しています)。