QuickFIX/J: 如何检测连接失败?

QuickFIX/J: how to detect when connection fails?

当我通过 initiator.start() 方法使用 SSL 将启动器连接到 FIX 服务器时,它会启动一个单独的线程来建立连接。现在,当这失败时,例如由于 SSL 握手问题或服务器连接问题,错误被抛出到日志中,但似乎无法被困在代码中并进行管理。发生错误时如何detect/trap?

Disconnecting: Socket exception (<server ip>): java.net.SocketException: Connection reset.

堆栈跟踪的底部是线程池执行程序。

我在 start 方法周围有一个 try-catch,但由于异常发生在另一个线程中,它无法捕获它。

您应该在您的应用程序中实现 quickfix.SessionStateListener 接口。

onDisconnect() 回调应该在您的案例中被调用。

顺便说一句:围绕 Initiator 的 start() 方法的 try-catch 只会捕获启动过程中发生的异常,例如配置错误。

更新:从 QuickFIX/J 2.3.0 开始,您还可以从 SessionStateListener 实现回调 onConnectException(),它将通知您Initiator中连接初始化过程中发生的异常。