2017-11-06 2 views
1

私はPikaと連携していくつかのキューを消費するマルチプロセスとマルチスレッドシステムを持っています。 システムがマルチスレッドコンシューマのシングルプロセスで動作する場合、正常に動作しますが、マルチプロセス(生成されたプロセス)で動作する場合、コンシューマによってはキューから重複データを取得することがあります。マルチ処理システムでPikaコンシューマを扱う方法

どのように消費者は、キューからデータを取得する際、他の消費者は再びそのキューからそのデータをフェッチすることはありませんことを、この問題に対処するには?問題から

サンプルマップ:

Single-Process, Multi-Thread: 
    Sample queue data: 1-2-3-4-5 
     consumed by thread-1: 5 
     consumed by thread-2: 4 
     ... 

Multi-Process, Multi-Thread: 
    Sample queue data: 1-2-3-4-5 
     consumed by process-1, thread-1: 5 << ISSUE 
     consumed by process-2, thread-1: 4 
     consumed by process-3, thread-3: 5 << ISSUE 
     ... 

注:各スレッドは、独自の接続を持っています。

+0

メッセージを消費して拒否してキューに入れない限り、RabbitMQは同じデータを2回配信しません。これはpikaのバグかあなたのアプリケーションです。実装についての詳細がなければトラブルシューティングが難しいでしょう。 – eandersson

答えて

0

のRabbitMQチームはthis mailing listを監視し、のみときどきStackOverflowの上で質問に回答しています。

追加のプロセスやスレッドを作成する前にPikaクライアントを作成していますか? Pikaクライアントは、the docsに記載されているように、スレッドセーフでもマルチプロセスセーフでもありません。

私はこの特別な振る舞いをさらに診断することはできません。

関連する問題