来自已登录用户的所有消息是否都经过同一个修复会话?

Do all messages from logged users go through the same fix session?

我正在尝试为我们在工作中处理的应用程序构建项目结构。修复协议世界的真正新手。

我不明白的是,do/should所有消息都通过同一个客户端-服务器会话,还是为每个登录应用程序的用户创建一个新会话?我认为第一个选项比另一个更优化,因为它会对修复引擎产生更少的负载,但我想知道最佳实践是什么。

您可以将 session 视为 FIX 客户端和 FIX 服务器之间的套接字连接。当一个 FIX 客户端打开这样一个套接字连接时,它发送的第一个 FIX 消息是Logon,这个消息中的字段向 FIX 服务器标识 FIX 客户端。 FIX 服务器可以通过响应 Logon 消息来接受连接,或者通过关闭套接字来拒绝连接。

根据您问题中提供的有限细节,我猜测您的“应用程序”是一个 FIX 客户端,它不代表自己创建 FIX 消息,而是充当委托服务器。例如,可能有多个用户,每个用户都有自己的 GUI 向委托服务器发送消息(以 non-FIX 格式),然后委托服务器将这些传入消息转换为 FIX 格式并充当FIX 客户端将这些消息转发到 FIX 服务器。在这种情况下,我想到了几种选择。

第一个选项是委托服务器为每个用户打开一个单独的到 FIX 服务器的套接字连接,并使用 user-specific 套接字连接发送一个 Logon 消息与该用户的证书。从 user 1 到委托服务器的消息通过 socket 1 委托到 FIX 服务器,来自 user 2[=34 的消息=] 通过 socket 2 委托,依此类推。

第二个选项是委托服务器打开到 FIX 服务器的单个套接字连接,发送 Logon 一次,然后,在代表用户发送的每条消息中,使用 header 字段,例如 OnBehalfOfCompIDOnBehalfOfSubIDSenderSubID 来识别用户(免责声明:我很少有机会使用这样的 header 字段,以及我对它们预期目的的理解可能不正确,所以这个建议可能在语义上有缺陷;如果是这样,我希望这里的其他用户能在评论中纠正我)。或者消息 body 中的 Account 字段可能用于此目的。

前两个选项基于 FIX 服务器需要知道(间接)向其发送消息的各个用户的身份的假设。如果所有用户都代表一个法律实体进行交易,则第三个选项是相关的。在这种情况下,可能不需要向 FIX 服务器公开个人用户的身份,因此委托服务器可以与 FIX 服务器有一个单一的套接字连接,并发送一个单一的 Logon 消息来识别法人实体,绝不会将个人用户的详细信息传递给 FIX 服务器。