chaitalipatil
chaitalipatil

Reputation: 43

Unable to receive full FIX message upon QuickFIX/J version upgrade 1.6.3 to 1.6.4

I am able to receive my FIX message successfully in fromApp() method but when I am on quickfix version 1.6.3. As soon as I change quickfix version to 1.6.4, I am not receiving part of my message.

The message I receive on 1.6.3 8=FIX.4.4__9=176__35=V__34=283__49=K3FIX__52=20240206-11:19:44.484__56=acceptor-dev__142=192.000.8.001__262=KL07181EBBE34530982ECAF18982BCGH__263=1__271=1__4567=2M__146=1__55=ABC/MNQ__83=FBSFxR4__10=201__

The message I receive on 1.6.4 8=FIX.4.4__9=139__35=V__34=2__49=K3FIX__52=20240206-10:25:52.758__56=acceptor-dev__142=192.000.8.001__146=1__262=KH4B989277CE4A97A079619BF58E8BFT__263=1__10=101__

So you see after 263=1, I am missing on few fields. These are the messages logged in fromApp() method.

Please note I have nto changed anything from 1.6.3 to 1.6.4 except this change of version.

I am using FIX 4.4 in both and using below 2 properties as well: fix.acceptor.useDataDictionary=Y fix.acceptor.dataDictionary=FIX44.xml

I verfied source is sending correct message in both cases. I am trying to log the messages in fromApp method and above are those messages. Verified FIX4.4 in both cases and data dictionary props are same in both cases too. I am expecting information "4567=2M__146=1__55=ABC/MNQ__83=FBSFxR4" in my message after 1.6.4 upgrade.

Edit:

I have those props in my application.properties

fix.acceptor.validateFieldsOutOfOrder=N
fix.acceptor.allowUnknownMsgFields=Y

Edit2: below is my FX44.xml

<fix major="4" minor="4">
        <header>
        </header>
        <trailer>
        </trailer>
        <messages>
            <message name="KDRequest" msgtype="V" msgcat="app">
                <group name="NRS" required="N"> 
                    <field name="KDESize" required="N" />
                    <field name="DValue" required="N" />
                </group>
            </message>
            <message name="KDSFull" msgtype="W"
                msgcat="app">
                <group name="NoMDEntries" required="Y">
                    <field name="KDESize" required="N" />
                    <field name="DValue" required="N" />
                </group>
            </message>
        </messages>
        <components />
        <fields>
            <field number="271" name="KDESize" type="QTY" />
            <field number="4567" name="DValue" type="STRING" />
        </fields>
    </fix>

Upvotes: 0

Views: 151

Answers (1)

Christoph John
Christoph John

Reputation: 3283

Check that the dictionary for message type V/MarketDataRequest containts the tags that you receive in the message.

E.g. tags 271 and 4567 are NOT part of the standard V message. You need to add these tags to the dictionary (preferred) or set the following options to have the message accepted:

ValidateUnorderedGroupFields=N
AllowUnknownMsgFields=Y

Edit: IIRC we improved some thing in validating unknown fields. If your case worked with QFJ 1.6.3 then it was most probably a bug. ;)

Upvotes: 1

Related Questions