質問

接続の切断を検出する良い方法を探しています。

私のアダプターは、例の1つに基づいてFix :: Applicationとして実装されています。ソケットイニシエーターを使用して修正ゲートウェイに接続します。

インターネットを切断すると、Fix :: ApplicationのonLogoutメソッドが起動されるまで約30秒かかります。基礎となるクラスの一部は、ソケットに問題があることをずっと早く認識しているようです。これにフックする簡単な方法はありますか?

役に立ちましたか?

解決

これを解決する最善の方法は、おそらくハートビート間隔を短くして、より早くわかるようにすることです。 TCP接続が失われた場合に発生するメッセージは知りませんが、QuickFixがOSイベントをリッスンしているとは思いません。ただし、そのようなメッセージがあった場合は、fromAdminイベントを通過する可能性があります。

QuickFix DLに質問を投稿しましたか?

他のヒント

使用している修正エンジンは、TCPが切断されたときにコールバックしないか、onLogout以外の何かにコールバックする可能性があります。 修正プログラムを使用しているので、ハートビートの欠落により強制的にログアウトされると思います。

簡単な方法は、コードを調べて、ソケットクローズが処理されている場所と、これが発生したときに実行されるパスを確認することです。

TCP自体には、 SO_KEEPALIVE と呼ばれるネイティブハートビートメカニズムが付属しています。問題は、このハートビートのデフォルトの間隔が2時間に達する可能性があることです。これはOSレベルで構成されます。したがって、理論的には、SO_KEEPALIVEをオンにし、OSレベルで適切なハートビート間隔を設定して、満足することができます。ただし、前述のとおり、これはOSに非常に依存しているため、ほとんどのアプリケーションはアプリケーションレベルでハートビートを実装することを選択し、FIXも例外ではありません。 FIXハートビート間隔を短くすることは、特に切断時キャンセルに依存しており、検出されない接続損失の余分な秒が不要な注文の実行につながる場合に、ここに行く方法です。修正エンジンの上に実装されたFIXゲートウェイは、すぐに使用可能なハートビート構成をサポートする必要があります。例については、 CoralGateway をご覧ください。 (免責事項:私はCoralGatewayの開発者の1人です)

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