I need to handle the client-side of a FIX implementation.
From the basic setup what I noticed is: once the message is sent the Initiator/client gets terminated in Eclipse while the Acceptor keeps listening on the port. Should the Initiator also have to be running indefinitely?
The application we are trying to build has to send messages

(NewOrderSingle, OrderCancelRequest)

to the Acceptor also have to receive messages for

Order Cancel Confirm/Reject, Execution Report, Trade Reversals etc)

from the Acceptor. Can both communications be done through a single Initiator in an asynchronous mode?
I.e. I need to handle both Inbound and Outbound messages in the client-side application. So if the client is not up how will the messages will be received at Initiator side?
Also in this case how will the Heartbeat messages keep happening since the Initiator is done? Do I need to run the Initiator in an infinite loop like

while {true}

I am a beginner in java/networking coding and in QuickFIX/J, so pardon if these are very basic questions.


  1. Should the initiator be running indefinitely? Yes
  2. Is initiator dual channel async comms? Yes
  3. If the client is not up and messages are missed? Then QF defaults to the gap fill functionality.
  4. If the client disco what happens to heartbeats? The reconnection logic kicks in.
  5. Do I run the initiator in an infinite loop? No, the application starts its own thread. You just have to handle the 5 overrides and, if you are message cracking, handle each message type you need to.