I am just getting started with QuickFIX/J. One thing I am confused reading their documents is that what exactly is the messaging contract ensured by QuickFIX implementation of the FIX protocol?
In particular, I know FIX has a built-in sequence number based mechanism which implementations can leverage to handle out of order, missing or duplicated messages. But does QuickFIX/J already has the capability built in? As an application using QuickFIX/J to communicate with a fix engine, can I assume:
Messages delivered to my app from QuickFIX/J are always in order.
There is no missing messages (QuickFIX/J will automatically handle the re-requesting)
There is no duplicated messages (QuickFIX/J can look at the sequence number recieved so far and filter out possible duplication)
If the remote fix engine crashes, I will reconnect with the last known sequence number automatically when the engine comes back
If my app crashes, when it restarts will it be able to automatically resume the session from the previous known sequence number? (e.g. will there be any out of the box sequence number persistence mechanism?)