質問

pika.SelectConnectionを使用してRabbitMqサーバーと通信するスクリプトがいくつかあります。

スクリプトの動作中にサーバーがダウンした場合に備えて、これらのスクリプトがrmqサーバーに自動的に再接続しようとするようにする方法はありますか?

役に立ちましたか?

解決

再接続に次のアプローチを使用するスクリプトがたくさんあります: ジェネラコディセタグプレ

ナキウサギを使用していませんが、昆布を使用していますが、それでも原則を適用できます。drain_eventsメソッドは、メッセージ消費の中核です。つまり、メッセージを永久に受信し、コールバックを実行してメッセージを処理することをループします。ここでわかるように、低レベルのソケットライブラリは25秒ごとにタイムアウトします。一部のライブラリでは、モジュール内でクラッシュすることなくこの動作を機能させるために、数行のコードにパッチを適用する必要がありました。

いずれの場合も、hb.beatによって送信されるハートビートはスーパーバイザープロセスによって監視され、短すぎる期間に失敗が多すぎると、このプロセスはスクリプトを強制終了します。スクリプトを強制終了した後、スーパーバイザはスクリプトを再起動します。これは、断続的なネットワークエラーやMQブローカーの再起動の処理に適しています。スクリプトに再接続を実行させることもできましたが、強制終了して再起動する方が簡単でした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top