微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决来自已登录用户的所有消息是否都经过相同的修复会话?

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

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

解决方法

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

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

第一个选项是委托服务器为每个用户打开一个到 FIX 服务器的单独套接字连接,并使用特定于用户的套接字连接发送带有该用户凭据的 Logon 消息。 用户 1 到委托服务器的消息通过 socket 1 委托给 FIX 服务器,用户 2 的消息通过socket 委托2,依此类推。

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?