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

skw*_*ord 3 quickfixj

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

Disconnecting: Socket exception (<server ip>): java.net.SocketException: Connection reset.
Run Code Online (Sandbox Code Playgroud)

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

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

Chr*_*ohn 5

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

onDisconnect()在您的情况下应该调用回调。

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

更新:从 QuickFIX/J 2.3.0 开始,您还可以实现回调onConnectException(),该SessionStateListener回调将通知您在启动器中初始化连接期间发生的异常。