0

キューからメッセージを取得するスクリプトがあります。これは、他のプロセスが機能するために必要な前処理を実行します。

今、これらのメッセージを配信する必要があるので、これらのメッセージを確認する必要があります。メッセージをリッスンしているサービスの1つがダウンした場合、オンラインに戻ったときに見逃したメッセージを受信するはずです。

いくつかの質問:

1 /前処理が実行されるたびに追加される各後処理サービスのキューを持つことは意味がありますか?(したがって、各プロセスの後に同時に8つの異なるキューを追加する可能性があります。これは大量のメッセージ(数十万p /日)になります。

2 /キューにメッセージを追加するのはどれくらい速いですか?8〜10個のキューに追加すると、ソフトウェアの速度が低下しますか?

3 /トピック交換を使用してファンアウトでこれを行うことはできますか?私の唯一の懸念は、私のサービスの1つがダウンした場合、メッセージを見逃してしまうことです。

4 /経験者からのアドバイスはありますか?

4

1 に答える 1

1

いくつかの考え:

ポストプロセッサがそれぞれ異なる「ジョブ」を実行している場合は、ポストプロセッサが使用するキューを用意するのが理にかなっています。多数のポストプロセッサがすべて同じタスクを実行している場合は、すべてのポストプロセッサがメッセージを消費できるキューを1つだけ持つ必要があります。

キューへのメッセージの追加は高速で、RabbitMQへのキューの追加は高速で、キューを交換にバインドするのは高速です。システムの速度を低下させるのは、メッセージのサイズと受信する可能性のある数、そして実際に実行する必要のある処理の量です。

もう1つの考慮事項は、メッセージの永続性に関するものです。メッセージがRabbitMQの再起動後も存続する必要がありますか。つまり、メッセージはどの程度重要ですか。それらが失われないことが重要である場合(あなたの質問の音によってそれはそうです)、あなたはそれらが持続することを確認する必要があります。RabbitMQのドキュメントを見ると、これを行うにはかなりのコストがかかることがわかります。

これは、システムが実際に何をしているかによって異なります... Topcisは優れており、Fanoutは優れていますが、システムが何を行うかは、どちらが該当するかによって異なります。

RabbitMQ in Actionを読むことを強くお勧めします。これは優れたリソースであり、お金に見合う価値があります。

于 2012-08-02T22:50:56.523 に答える