In FIX Antenna C++ and FIXEdge there is an option to reject messages that should be routed into the session, which exists, but currently isn't available (i.e., it can be acceptor's session, which is waiting for incoming connection, or initiator's session in reconnecting or initial state; logs for this session should exist).
In order to configure it you should use RejectMessageWhileNoConnection parameter in the engine.properties file or in the FixEdge.properties file. This parameter can be set for each session individually in the FixEdge.properties file.
The default value of this parameter is "false".
if RejectMessageWhileNoConnection = false, then each message, that should be routed to the unavailable session, will be stored in the *.out log of this session and will be resent when the session connects.
If you want that messages will be resent after each terminate you should configure the following parameters:
RecreateOnLogout = true TerminateOnLogout = false
- if RejectMessageWhileNoConnection = true, then each message, that should be routed to the unavailable session, will be stored in the *.out log of this session and will be resent if the session connects during the MessageTimeToLive interval. But if the MessageTimeToLive interval had been elapsed before the session connected, then such messages will be substituted with the Heartbeat messages, and when the session connects, these message will not be resent in response to ResendRequest message.
The MessageTimeToLive interval is an interval during which messages can be resent in response to ResendRequest, when the session connects.
The default value of this parameter is 500.
In the FIXEdge there is a special event, which we can use to indicate, that messages, that was sent, are not delivered to the target session and was rejected, - OnUndeliveredMessageEvent.
This event will be fired if RejectMessageWhileNoConnection parameter for the session is set to true only.