Thread: [Quickfix-developers] How does Resending messages work?
Brought to you by:
orenmnero
From: Fervus <JL...@ge...> - 2010-03-04 18:24:09
|
I understand that quickfix will automatically handle requesting missing messages, what I want to know is how does it handle this? Does it store the messages after the missing message and then process them after receiving the missing message? Or does it just throw it away and request all the messages again? Or some other way entirely? How long back will go looking for lost messages or if I was sending out messages and I get a resend request but it was a market order is there a way to intercept that message and decide whether I want to really resend that message or not? I have looked through the code and these forums and can not find anything that tells me this. I am only curious because I do not want to just use some system and then if it fails for some reason or I need to adjust how I handle missing/lost messages I understand how my adjustments will effect QuickFix and my FIX messaging system. Thanks Josh -- View this message in context: http://old.nabble.com/How-does-Resending-messages-work--tp27784661p27784661.html Sent from the QuickFIX - Dev mailing list archive at Nabble.com. |
From: Grant B. <gbi...@co...> - 2010-03-04 19:17:27
|
I think that's more of a FIX protocol question rather than a QuickFIX-specific question. You'd be better off consulting the FIX specification. I think volume 2 is the part with the relevant information. -Grant On Thu, Mar 4, 2010 at 12:24 PM, Fervus <JL...@ge...> wrote: > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > > I understand that quickfix will automatically handle requesting missing > messages, what I want to know is how does it handle this? > > Does it store the messages after the missing message and then process them > after receiving the missing message? Or does it just throw it away and > request all the messages again? Or some other way entirely? How long back > will go looking for lost messages or if I was sending out messages and I get > a resend request but it was a market order is there a way to intercept that > message and decide whether I want to really resend that message or not? > > I have looked through the code and these forums and can not find anything > that tells me this. I am only curious because I do not want to just use some > system and then if it fails for some reason or I need to adjust how I handle > missing/lost messages I understand how my adjustments will effect QuickFix > and my FIX messaging system. > > Thanks > Josh > -- > View this message in context: http://old.nabble.com/How-does-Resending-messages-work--tp27784661p27784661.html > Sent from the QuickFIX - Dev mailing list archive at Nabble.com. > > > ------------------------------------------------------------------------------ > Download Intel® Parallel Studio Eval > Try the new software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta. > http://p.sf.net/sfu/intel-sw-dev > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > |
From: Fervus <JL...@ge...> - 2010-03-04 19:25:02
|
I understand that responding to it is more a FIX issue, but I was wondering what specifically quickfix does to solve the lost message need to resend issue, what is their exact solution. -- View this message in context: http://old.nabble.com/How-does-Resending-messages-work--tp27784661p27785394.html Sent from the QuickFIX - Dev mailing list archive at Nabble.com. |
From: <or...@qu...> - 2010-03-04 22:57:50
|
Hi Josh, I'll try to give you an idea of how QuickFIX handles these scenarios. So we are running along and processing messages, sequence numbers are in order, everything is great, then all of a sudden we get a sequence number higher than expected. Ok, so something has been missed. And it is a requirement of FIX that we process all messages in order. What QuickFIX will do in this scenario is send our a resend request for the missing range, and stick the out of order message into an in memory queue. Any new messages that come in will also be placed at the end of this queue. At some point the other side will begin resending messages. Once all missing messages have been processed, QuickFIX will immediately process everything that is sitting in the queue. At this point we should be all caught up and will be able to process new messages. No, the other part of your question is for when you are resending messages. Messages are stored in the MessageStore (you provide a MessageStoreFactory in your initialization). There is a one to one relationship between a session and a message store. This store will store all messages that have been sent on that session until the session expires. This gives you the capability to be able to resend any message if it is requested. This is important if you are sending trade reports and someone needs to re-request the days trades. The scenario you pointed out is different. What if I sent out an order 2 minutes ago and they re-requests that. I do NOT want that order to go out anymore. We thought of that case as well. For this you need to override the toApp call in your Application object. Here you can inspect all the outgoing messages. A common thing to do here would be to check either for a MsgType of D or an out of date SendingTime and throw a DoNotSend exception. This will signal the engine to replace your message with a gap fill. This way the other side is satisfied and your message will not be sent out. I think that covers the scenarios you were interested in. --oren > -------- Original Message -------- > Subject: [Quickfix-developers] How does Resending messages work? > From: Fervus <JL...@ge...> > Date: Thu, March 04, 2010 12:24 pm > To: qui...@li... > > > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > > I understand that quickfix will automatically handle requesting missing > messages, what I want to know is how does it handle this? > > Does it store the messages after the missing message and then process them > after receiving the missing message? Or does it just throw it away and > request all the messages again? Or some other way entirely? How long back > will go looking for lost messages or if I was sending out messages and I get > a resend request but it was a market order is there a way to intercept that > message and decide whether I want to really resend that message or not? > > I have looked through the code and these forums and can not find anything > that tells me this. I am only curious because I do not want to just use some > system and then if it fails for some reason or I need to adjust how I handle > missing/lost messages I understand how my adjustments will effect QuickFix > and my FIX messaging system. > > Thanks > Josh > -- > View this message in context: http://old.nabble.com/How-does-Resending-messages-work--tp27784661p27784661.html > Sent from the QuickFIX - Dev mailing list archive at Nabble.com. > > > ------------------------------------------------------------------------------ > Download Intel® Parallel Studio Eval > Try the new software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta. > http://p.sf.net/sfu/intel-sw-dev > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers |
From: Fervus <JL...@ge...> - 2010-03-05 14:48:06
|
Thank you very much, that is exactly the information I needed. -- View this message in context: http://old.nabble.com/How-does-Resending-messages-work--tp27784661p27794844.html Sent from the QuickFIX - Dev mailing list archive at Nabble.com. |