2012-11-16 8 views
6

EC2でスポットインスタンスを使用してRabbitMQキューから消費しています。各ジョブには数秒かかり、手動の「ack」が必要です。RabbitMQ "Zombie"コンシューマ

インスタンスが終了したときに問題が発生します。 AMQPコンシューマーのクリーンなシャットダウンのための時間がないので、RabbitMQサーバーは依然として死んだコンシューマーがまだ存在すると考えています。それは彼らの仕事を再配達しません、そして、彼らはまだそれらに新しい仕事をルーティングします。

ゾンビの消費者を自動的にタイムアウトさせてワーカープールから削除するにはどうすればよいですか?

答えて

5

RabbitMQ接続でHeartbeatプロパティを設定することをおすすめします。ハートビートが停止すると、RabbitMQは結局接続を切断し、未処理のメッセージをキューに戻します。

1

私はあなたと同じ場所にいて、コンシューマ側(node_amqpモジュールを使ってNode.Js)に接続ハートビートのプロパティを設定して解決しました。接続は "ゾンビ"消費者とともに閉じられ、削除されます。アンロックされたジョブはReadyに戻ります。

関連する問題