2

我们目前正在研究 FIX 连接,从而可以标记仅应验证的数据。已决定使用特定的TargetSubID标记此数据。但这意味着一个新的会话。

假设我们将消息发送到会话FIX.4.4:S->T。如果我们随后收到一条只应使用 TargetSubID V 验证的消息,则这意味着会话FIX.4.4:S->T/V。如果未配置此会话,我们会收到错误消息

Unknown session: FIX.4.4:S->T/V

如果我们在另一个旁边显式配置此会话,则会出现错误

quickfix.Session – [FIX/Session] Disconnecting: Encountered END_OF_STREAM

正如bhageera 所说,您使用相同的凭据登录。

(...)我连接的交易对手一次只允许每个用户/密码(即使用这些凭据的会话)进行 1 个连接。

我不是 FIX 专家,但我想知道 TargetSubID 是否在这里被滥用。如果没有,我想知道该怎么做。我们使用 camel-quickfix 开发 FIX 客户端。

4

2 回答 2

1

这取决于交易对手 - 有时 Sender/TargetSubID 被认为是唯一连接的一部分,有时它们会区分一个连接上的消息。

您的库是否具有从连接查找中排除子 ID 的配置选项?例如,在 QuickFix 中,您可以设置SessionQualifier

于 2018-09-11T16:54:38.677 回答
1

这在很大程度上取决于您的系统是什么样的以及您最终想要实现的目标。

通常要评估的维度是:

  • 最大限度地提高灵活性
  • 最小化支持测试所需的额外逻辑数量
  • 最大程度地减少从测试环境意外连接到生产环境时发生坏事的风险(可能会发生,尽管您可能会这么想)。

就我自己而言,我不会使用可能涉及会话/路由行为的标签进行测试,除非我只需要路由功能并且我的系统可靠地按照我期望的方式运行(可能不是你的情况)。

相反,我会考虑其中之一:

  • 从用户定义的范围(5000-9999)中挑选一些东西
  • 使用以某种可逆方式损坏的符号系统标签之一(比如 Symbol(55))(比如标签 55 中的“TEST_VOD.L”而不是“VOD.L”)

自定义范围的标签将提供很大的灵活性,损坏的符号系统标签将确保测试订单在意外发送到 prod 时会反弹。

对于任何一种解决方案,您都可能需要基于标签的路由和转换层。如果您使用的是基于 Java 的东西(我会关注 javax.scripting / Nashorn),那么两者都可以在几个小时内以通用形式完成。

于 2018-09-11T17:09:37.780 回答