QuickFix/J中"组"和"组件"之间的区别

mrb*_*ela 11 quickfix fix-protocol quickfixj

我是FIX世界的新手.我正在编写一个用Java处理FIX消息的应用程序,为此我正在使用QuickFix/J. 我从主页(http://quickfixengine.org/)下载了DataDictionary .我使用的是4.4版

在xml文件中存在组和组件.但是组件可以再次包含组.

它们之间的确切差异是什么?

谢谢你的帮助!!

Gra*_*ier 17

组件不是真的......事情.它们就像FIX DataDictionary中的宏.许多消息需要相同的字段集,因此DD不是在每个消息中指定相同的字段,而是定义其他消息可以包含的组件.

另一方面,一个集团是一个非常真实的东西.这是一个重复的字段序列,在消息中出现0次或更多次.

QuickFIX的编程接口在很大程度上忽略了组件作为一个概念.您无法从消息中提取组件,因为组件不是QF中的概念; 你只需像任何其他字段一样提取字段.

一个假设的例子:以下两个消息定义完全相同.

1:带有组件

<message name="Automobile" msgtype="X" msgcat="app">
  <field name="Wheel" required="Y"/>
  <field name="Bumper" required="Y"/>
  <component name="Dashboard" required="Y"/>
</message>

<component name="Dashboard">
  <field name="Radio" required="Y"/>
  <field name="AirConditioner" required="Y"/>
  <field name="Heater" required="Y"/>
</component>
Run Code Online (Sandbox Code Playgroud)

2:没有组件

<message name="Automobile" msgtype="X" msgcat="app">
  <field name="Wheel" required="Y"/>
  <field name="Bumper" required="Y"/>
  <field name="Radio" required="Y"/>
  <field name="AirConditioner" required="Y"/>
  <field name="Heater" required="Y"/>
</message>
Run Code Online (Sandbox Code Playgroud)

看到?组件几乎只是一个宏.

无论哪种方式定义,你最终都会调用msg.GetHeater()(或者其他).