温馨提示:本文翻译自stackoverflow.com,查看原文请点击:fix protocol - Difference between "group" and "component" in QuickFIX/J
fix-protocol quickfix quickfixj

fix protocol - QuickFIX / J中“组”和“组件”之间的区别

发布于 2020-05-26 12:11:47

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

XML文件中存在组和组件。但是组件可以再次包含组。

它们之间的确切区别是什么?

查看更多

提问者
mrbela
被浏览
29
14k 2020-03-07 17:36

组件不是真的...东西。它们就像FIX DataDictionary(DD)中的宏。许多消息需要相同的字段集,因此DD定义了其他消息可以包括的组件,而不是在每个消息中都指定相同的字段。

另一方面,组是非常真实的事情。这是一个重复的字段序列,将在一条消息中出现0次或多次。

QuickFIX(QF)编程接口在很大程度上忽略了组件的概念。您不能从消息中提取组件,因为组件不是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>
    
  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>
    

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

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