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中连接初始化过程中发生的异常。
当我通过 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中连接初始化过程中发生的异常。