1

私は実稼働システムで pika を使用していますが、BlockingConnection と SelectConnection の両方が、明らかなエラーや警告なしであちこちにメッセージをドロップしていることに気付きました。残念ながら、コードを投稿することはできませんが、この種の行動を経験した可能性のある他のユーザーからのガイダンスや逸話を求めたいと思いました. RabbitMQ は非常に堅実であると聞いたので、pika の信頼性に疑問を持ち始め、より信頼できる代替手段があるかどうか疑問に思っています。

4

1 に答える 1

1

あなたが見ているかもしれない問題は、basic.publish定義されている方法に関係していると思います。それは常に成功します。エラー(または成功)の場合、サーバーからのトラフィックは期待されません。

これを解決する移植可能な方法は、パブリッシュをトランザクションでラップすることです。

channel.tx_select()
channel.basic_publish(exchange='foo', ...)
channel.tx_commit()

このtx_commit()呼び出しは、受信したすべてのアクションを正常に処理した後、サーバーに tx.commitok で応答するように強制します。アプリケーションはtx.commitが成功するまで待機する必要があります。送信されたすべてのメッセージが成功したことを確認できます。

移植性がわずかに低いのはchannel.select、サーバーがbasic.ack. 残念ながら、その機能を pika'sBlockingConnectionで動作させることはできませんでしたが、より良い成功を収めることができるかもしれません.

于 2012-07-24T12:08:55.943 に答える