使用TargetSubID作为FIX协议中测试数据的标志是否正确?

时间:2017-12-13 08:10:35

标签: quickfix fix-protocol quickfixj camel-quickfix

我们目前正在开发一个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 says一样,您使用相同的凭据登录。

  

(...)我连接的对方只允许1个连接   每个用户/密码(即具有这些凭据的会话)。

我不是FIX专家,但我想知道TargetSubID是否只是在这里被误用了。如果没有,我想知道如何做到这一点。我们使用camel-quickfix开发FIX客户端。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

通常要评估的维度是:

  • 最大限度地提高灵活性
  • 最大限度地减少支持测试所需的其他逻辑
  • 最大程度地减少从测试到产品环境的意外连接中发生不良事件的风险(尽管您可能会想到,但仍可能发生)。

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

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

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

来自自定义范围的标签将提供很大的灵活性,损坏的符号体系标签将确保如果偶然发送给产品的测试订单会退回。

对于这两种解决方案,您可能都可能需要基于标签的路由和转换层。如果您使用的是基于Java的内容,那么这两个步骤都将以通用形式在几个小时内完成(我希望使用javax.scripting / Nashorn)。