我是quickfix的新手,quickfix版本FIX50sp2和FIXT11之间有些困惑。
什么时候使用什么?
我也知道在使用FIX 50sp2版本时使用FIXT11.xml,为什么不使用FIX50SP2.xml?
我试图将组TrdInstrmtLegGrp
添加到我的FIXT11.xml中,重建jar,之前我使用的是quickfixj-messages-fix50sp2-2.0.0
jar,但是现在对FIXT11.xml
进行更改并添加jar quickfixj-messages-fixt11-2.1.0-SNAPSHOT
后,它在TradeCaptureReport
上显示错误:20180418-04:46:29: java.lang.VerifyError: Bad type on operand stackException Details: Location: quickfix/fixt11/TradeCaptureReport$NoLegs.get(Lquickfix/field/LegSide;)Lquickfix/field/LegSide; @2: invokevirtual Reason: Type 'quickfix/field/LegSide' (current frame, stack[1]) is not assignable to 'quickfix/StringField' Current Frame: bci: @2 flags: { } locals: { 'quickfix/fixt11/TradeCaptureReport$NoLegs', 'quickfix/field/LegSide' } stack: { 'quickfix/fixt11/TradeCaptureReport$NoLegs', 'quickfix/field/LegSide' } Bytecode: 0x0000000: 2a2b b600 0457 2bb0
这就是我的FIXT11.xml在该组中的显示方式,与我的API相似:
<component name='InstrmtLegGrp'>
<group name='NoLegs' required='N'>
<field name='LegSymbol' required='N'/>
<field name='LegSecurityID' required='N'/>
<field name='LegSecurityIdSource1' required='N'/>
<field name='LegSecurityDesc' required='N'/>
<field name='LegRatioQty' required='N'/>
<field name='LegSide' required='N'/>
</group>
</component>
还是我需要在FIX50sp2.xml中进行所需的组更改?
最佳答案
从FIX 5.0开始,Quickfixj引入了传输词典和应用程序词典的概念。
运输词典将包含所有与运输相关的管理消息,如心跳/登录/注销等,而管理员将包含商业消息,如报价请求,交易捕获等。
您可以检查QuickfixJ配置TransportDataDictionary和AppDataDictionary。(https://www.quickfixj.org/usermanual/1.6.4/usage/configuration.html)