如何独立管理和重新加载多个 QuickFIX/J 会话?

How to manage and reload multiple QuickFIX/J sessions independently?

我可以在一个 QuickFIX/J 设置文件中配置多个会话,然后用一个 SocketInitiator 启动它们。但我希望能够修改一个或多个会话的配置,然后只重新启动这些会话而不影响任何其他会话。

我可以通过拥有多个设置文件并在每个会话中使用一个 SocketInitiator 来做到这一点。但似乎 QuickFIX/J 不打算以这种方式使用。它会给我带来任何问题吗?

每个会话启动一个 Initiator 是完全没问题的。这是一个品味问题。在任何情况下:每个会话单独 Initiator 是独立的,不会影响其他会话。

如果您想使用单个 Initiator 的方法,那么您可以尝试通过 createDynamicSession()/removeDynamicSession() 动态地 add/remove 会话。不过还有一些手工工作。

  1. 找到您要重新加载的 Sessionlogout()close() 它。
  2. Session 打电话 removeDynamicSession()
  3. 获取要从 运行 Initiator 重新加载的 SessionID 的设置。通过 removeSetting().
  4. 从 运行 Initiator 中删除这些
  5. 然后从设置文件中重新加载所需 Session 的设置,并将它们放入 Initiator 的设置。
  6. 然后为 SessionID
  7. 调用 createDynamicSession()