Echo Configuration Between FIXEdge and Simple Client (Fix Client Simulator)
- Install FIXEdge (Simple Installation)
Add new Session to FIXEdge.properties ( FIXEdge1\conf\FIXEdge.properties )
Add a session TestEchoAcceptor to the list of sessions (multiple sessions should be separated by a comma):FIXEdge.propertiesFixLayer.FixEngine.Sessions = TestEchoAcceptor
And configure session parameters:
FIXEdge.propertiesFixLayer.FixEngine.Session.TestEchoAcceptor.Version = FIX44 FixLayer.FixEngine.Session.TestEchoAcceptor.StorageType = persistentMM FixLayer.FixEngine.Session.TestEchoAcceptor.Role = Acceptor FixLayer.FixEngine.Session.TestEchoAcceptor.SenderCompID = FIXEDGE FixLayer.FixEngine.Session.TestEchoAcceptor.TargetCompID = FIXECHOCLIENT FixLayer.FixEngine.Session.TestEchoAcceptor.Description = FIX session for echo testing FixLayer.FixEngine.Session.TestEchoAcceptor.StartTime = 08:00 FixLayer.FixEngine.Session.TestEchoAcceptor.TerminateTime = 23:59 FixLayer.FixEngine.Session.TestEchoAcceptor.RecreateOnLogout = true FixLayer.FixEngine.Session.TestEchoAcceptor.IntradayLogoutTolerance = true
Configure BL rules ( FIXEdge1\conf\BL_Config.xml )
BL_Config.xml<?xml version="1.0" encoding="UTF-8"?> <FIXEdge> <BusinessLayer> <!-- Rule messages from Simple Client send back switching SenderCompID and TargetCompID --> <Rule> <Source> <FixSession SenderCompID="FIXECHOCLIENT" TargetCompID="FIXEDGE"/> </Source> <Action> <Send> <FixSession SenderCompID="FIXEDGE" TargetCompID="FIXECHOCLIENT"/> </Send> </Action> </Rule> <DefaultRule> <Action> <DoNothing/> </Action> </DefaultRule> </BusinessLayer> </FIXEdge>
Run FIXEdge.
E.g. via run script:Windows:
<FIXEdge installation dir>\FIXEdge\bin\FixEdge1.run.cmd
Linux:
<FIXEdge installation dir>/FIXEdge/bin/FixEdge1.run.sh
Open FIX Client Simulator. (It can be found in the FIX Antenna .NET Wrapper package).
And create a new session (select Session menu -> Create New ...) as Initiator with the following parameters:Session type: Initiator
SenderCompID = FIXECHOCLIENT
TargetCompID = FIXEDGE
FIX Version = 4.4
Remote Port = 8901 ( ListenPort parameter in FIXEdge's engine.properties )
Remote Host = localhost (or IP address/hostname of the FIXEdge server)Please note that SenderCompID on the FIX Client Simulator side should have the same value as TargetCompId on the FIXEdge side
And TargetCompId on the FCS side should be the same as SenderCompID on FIXEdge's side.Send message from FIX Client Simulator ( Pipe character is used to represent SOH character )
New Order - Echo test.msg8=FIX.4.4|9=175|35=D|49=FIXECHOCLIENT|56=FIXEDGE|34=2|52=20131125-09:37:09.680|11=Order#1|21=1|100=1|55=TESTSMBL|54=1|60=20131124-04:11:46.768|38=20000|40=2|44=34.7|10=203|
The file with FIX message example and SOH delimiters: NewOrderEchoTestMessage.txt
Echo message from FIXEdge is received:
Receive.msgIncoming message: 8=FIX.4.49=14935=D49=FIXEDGE56=FIXECHOCLIENT34=352=20140228-14:43:19.01811=Order#121=1100=155=TESTSMBL54=160=20131124-04:11:46.76838=2000040=244=34.710=074
Troubleshooting:
- FIXEdge should be up and running state after step 4.
- There are [ERROR] or [FATAL] error records in FIXEdge logs FIXEdge1\log\FIXEdge.log.
- The FCS and FIXEdge have up-to-date licenses.
- If a session can't be established due to sequence number issues this can be resolved by cleaning logs on both sides.