如何永久断开接受器会话

How to permanently disconnect an Acceptor session

是否可以在 QuickFIX/J 中断开 Acceptor 会话? disconnect(String reason, boolean logError)这个方法我试过了。但是一旦对方尝试重新连接,会话就会重新连接。

我想要的是保持断开连接

根据 disconnect() 方法的 javadoc 注释,您不应该从用户代码调用它:

     * This method should not be called from user-code since it is likely
     * to deadlock when called from a different thread than the Session thread
     * and messages are sent/received concurrently.
     * Instead the logout() method should be used where possible.

所以请使用logout()方法退出Session。它还将以交易对手在连接时注销的方式禁用会话。但是他们登录的时间可能很短。这是因为该标志每秒只检查一次。

要立即拒绝登录,您可以从 fromAdmin() 回调中抛出 RejectLogon 异常。

更新:从 QuickFIX/J 2.3.0 开始,Acceptor 会话在调用 logout() 后将保持断开状态。参见 https://github.com/quickfix-j/quickfixj/pull/360