現在、RabbitMQ(RabbitMQ 3.6.12、Erlang 19.2)の約60-150メッセージを消費するマイクロサービス(ノードv8.3.0)のプロトタイプを作成中です.1)。時にはそれは魅力のように機能し、残りのメッセージはキューにはありません。しかし、メッセージが滞っているほとんどの場合、1秒あたり5〜20メッセージしか処理されず、キューに3Mまでのメッセージが蓄積されます。AMQP /ノードを使用して1秒あたり100メッセージを処理する方法
ここでは、単一のコンシューマですべてのメッセージを処理する方法について本当に興味があります。遅延を伴わずにこれらすべてのメッセージを処理するJavaコンシューマーがすでに存在するためです。 amqplibに基づいてthis node libraryを使用します。さらに、ハンドラは着信メッセージを即座に確認します。ビジネスロジックは絶対に非同期です。したがって、ビジネスロジックがなくても、それは固執します。交換タイプはtopic
であり、それはdurable
ではなく、キューにはauto-deleting
機能が有効になっています。無効なプリフェッチ、プリフェッチ= 1
と100
を成功させました。
..だから
1)あなたはノードのためのAMQP/RabbitMQのライブラリを使用していますか?
2)1秒あたりに処理されるメッセージの数はいくつですか?
3)これ以上の改善や提案はありますか?
ありがとうございます!
統合コードがないと、これは本当に答えにくいです。 RabbitMQのようなAMQPサーバは通常、毎秒数百を超える処理を行うことができますが、これを実現するにはさらに多くのチャネルや接続が必要です。 – tadman
https://github.com/lanetix/node-lanetix-amqp-easy#usage - 前述の例でも述べたような効果が発生します(connect + consume + console.log)。 1接続、1チャネル、1キュー。 – fheck
異なるAMQPライブラリを試して、一度に複数のワーカーを実行してみてください。 – tadman