2016-04-06 15 views
0

私たちはメールシンクシステムを書いており、そのためにRabbitMQを使用しています。すべてのプロデューサはメールIDをプッシュし、次にコンシューマはIDを取得してdbをメールに挿入します。 100人のコンシューマ(例えば)がいて、プロデューサがIDを生成する速度が速すぎると、すべてのコンシューマはIDを取得し、APIを使用してメールを取得するため、APIへの同時リクエストの制限は例外になります。RabbitMQでコンシューマをグループ化するにはどうすればよいですか?

私たちは、各生産者の消費者を制限します(例えば、最大消費者が1つのプロデューサのIDを受け取り、次に3が他のプロデューサのIDを受け取るなど)。

答えて

0

Сan(最大3 消費者は、その後、次の3は、他の一方から を受け取り、などであろう、あるプロデューサのIDを受信する場合は、例えば)我々は、各プロデューサのための消費者を制限しますか?

これは単純なルーティングを使用して行うことができます。

ProducerAは、キーrouteAconsumer1のルーティングとメッセージを送信し、consumer2consumer3がキーrouteAをルーティングと交換するためにサブスクライブされています。
ProducerBキーrouteBconsumer4のルーティングとメッセージを送信し、consumer5consumer6がキーrouteBをルーティングと交換するためにサブスクライブされています。 ..など
topic exchangeを使用することもできます。

しかし、これは、APIに対する同時リクエストの制限についての例外の問題に対する解決策ではないようです。あなたはどのAPIを指定していないので、この番号は設定可能であり、それを増やすことができる、あるいは単に並行アクセスが許可されないと仮定することができます(70秒ではないので想像もつきません)。並列性の全体的な考え方が崩壊して落ちる...