4

次のような分散システムにRabbitMQを使用しようとしています:

  • プロデューサーは、オーダー ID の JSON 形式のリストをキューに入れます
  • 複数の消費者がそのキューから取り出し、その注文 ID を使用してビジネス ロジックを実行し、結果 (JSON 形式) も別のキューに戻されます。
  • 2 番目のキューから、別のコンシューマーがデータを取得し、それを呼び出し元に返します。

私はまだRabbitMQに非常に慣れていないので、データができるだけ速く(場合によっては数秒、最大5秒で)返される必要があるという事実を考えると、このモデルが正しいアプローチであるかどうか疑問に思っているため、リアルタイムの要件があります。また、キューに渡されるメッセージのサイズはどれくらいですか? プロデューサが返す JSON は、コンシューマの動作に基づいてかなり大きくなります。

アイデアをありがとう!

4

2 に答える 2

2

このプレゼンテーション( InfoQ ) の47 ページを参照して、さまざまなメッセージング形式の優れた比較を参照してください。

于 2010-09-17T11:23:35.547 に答える
1

ご提案いただいたデザインで問題ありません。

少し問題があるのは、「リアルタイム要件」を強制するのは簡単ではないということです。たとえば、現在、キュー内のメッセージを期限切れにすることはできないため、メッセージを消費するときにクライアントがこれを処理する必要があります。

RabbitMQ <=1.8.1 のメッセージの合計サイズは、使用可能な RAM の量によって制限されていました。2.0.0 の時点では、利用可能なディスク容量によって制限されています (つまり、メモリが不足している場合、rabbit はメッセージをディスクにページングします)。個々のメッセージ サイズは 32 ビット整数 (IIRC) として記録されるため、個々のメッセージは最大 4 GB を超えることはできません。これが問題になる場合は、JSON をネットワーク ストレージに保存し、メッセージで ID を渡すことを検討してください。これ以外に制約はありません。

于 2010-09-17T11:16:36.263 に答える