Repeating Group Implementation

Imported from previous forum

Hi,

I have a query regarding the repeating group implementation. Say for message X, I have following tags A, B and C that are to be sent in a group in a message. The no. of occurances of A, B and C will be reflected in tag N, where N will indicate the no. of times of occurances of A, B and C in a message.

e.g.
MessageType = X
N=3
A
B
C

Hence, in a message A, B and C will be repeated three times. Pefectly understood, but my query is say for example the no of times that we need to send A, B and C is large and single message buffer size is less, then we need to fragment the message. e.g. MessageType = X will be repeately sent with the tags A, B and C. In this case, how will the receiving party know how many messages of type X will be received by it from the sender? Should we include the total no of message type X that will be sent or should we include a customized tag to indicate whether the current message is the last message that will be received?

Tks in advance…

Dave,

The concept you describe is called fragmentation in the FIX world and a number of standard messages already implement it. Open the 5.0 SP2 spec and search for fragmentation - that section describes the whole process. http://fixprotocol.org/documents/4487/FIX-5.0_SP2_VOL-5.pdf

Hi,

I have a query regarding the repeating group implementation. Say for message X, I have following tags A, B and C that are to be sent in a group in a message. The no. of occurances of A, B and C will be reflected in tag N, where N will indicate the no. of times of occurances of A, B and C in a message.

e.g.
MessageType = X
N=3
A
B
C

Hence, in a message A, B and C will be repeated three times. Pefectly understood, but my query is say for example the no of times that we need to send A, B and C is large and single message buffer size is less, then we need to fragment the message. e.g. MessageType = X will be repeately sent with the tags A, B and C. In this case, how will the receiving party know how many messages of type X will be received by it from the sender? Should we include the total no of message type X that will be sent or should we include a customized tag to indicate whether the current message is the last message that will be received?

Tks in advance…

I wanted to add another comment. Your question is about the encoding of a FIX message. FIX does not have any length restrictions and only defines an application level view. This includes the mechanism explained by Dean for mesasge fragmentation.
FIX message can be sent over different transports, having different options in terms of handling long messages. It is important to avoid blurring the lines which you would do by adding custom tags to support your special encoding mechanism for long messages.
In general, technical limits are big enough to accomodate reasonably long messages, i.e. I would try to avoid overlong messages by designing short ones. For example, a MDIncrementalRefresh message can have multiple entries for any number of instruments. Is it a good idea to send a single message for 100,000 series updates at a time? Or should one rather try to send the series by product or some other application level “divider” to end up with no more than 100 series updates per message? Handling of long messages is also always a burden for the recipient, it increases complexity and is rarely necessary.
Sometimes you need logical links between messages to associate them. But that is a similar problem that you have with databases. You split your data into multiple tables and use certain fields to link them together from a logical point of view to avoid redundancy. You avoid putting all fields into a single table.
Regards,
Hanno.

Hi,

I have a query regarding the repeating group implementation. Say for message X, I have following tags A, B and C that are to be sent in a group in a message. The no. of occurances of A, B and C will be reflected in tag N, where N will indicate the no. of times of occurances of A, B and C in a message.

e.g.
MessageType = X
N=3
A
B
C

Hence, in a message A, B and C will be repeated three times. Pefectly understood, but my query is say for example the no of times that we need to send A, B and C is large and single message buffer size is less, then we need to fragment the message. e.g. MessageType = X will be repeately sent with the tags A, B and C. In this case, how will the receiving party know how many messages of type X will be received by it from the sender? Should we include the total no of message type X that will be sent or should we include a customized tag to indicate whether the current message is the last message that will be received?

Tks in advance…