Quickfixj not honoring custom fields in a repeatin

2019-08-12 08:12发布

问题:

I am using FIXT1.1 and FIX Application version 5.0SP2.

I added some custom fields to the QuotSetAckGrp, part of MassQuoteAcknowledgement message. However, when quickfix reads the repeating group, it does not read the custom fields as part of the repeating groups. Instead, it treats the custom fields are regular parent-level fields and throws a "Tag appears more than once" session level reject.

Appreciate any inputs to help resolve the issue.

回答1:

You need to modify the receiver's AppDataDictionary to match the messages that your sender is sending. Also, you need to set UseDataDictionary=Y in your config.

QF/j needs to look at the DD xml file to know what fields are in a repeating group, else it cannot know where each group member ends.

When the engine encounters a field that isn't inside the DD's repeating group definition, it assumes that the current group member ended with the previous tag.

Here's a howto for customizing your DD: http://quickfixn.org/tutorial/custom-fields-groups-and-messages

(The above link is for QF/n, but it's nearly the same for QF/j.)



回答2:

See the QuickFIX/J User FAQ, topic "I altered my data dictionary. Should I regenerate/rebuild QF/J?".

OUTGOING MSGS: The DD xml file is irrelevant when you construct outgoing messages. You can pretty much add whatever fields you want to messages using the generic field setters (setString, setInt, etc) and QF will let you. The only trouble is with repeating groups. QF will write repeating group element ordering according to the DD that was used for code generation. If you altered any groups that are part of outgoing messages, you DEFINITELY need to rebuild.

To rebuild QuickFIX/J to accept your custom data dictionary, please refer to the answer I gave in the following StackOverflow post.

HTH.



标签: quickfixj