Sample Configuration FileFIX Antenna .NET Programmer's Guide

Below is a sample of FixAntenna configuration file that supplements FixAntenna Configuration help topic.

You will be able to find more examples of the configuration files in FixAntenna.NET Samples and Tutorials, just search for engine.properties files in FixAntenna Samples directory.

Sample File

# The FIX Engine configuration file.
#
# $Revision: 1.193 $

# For UNIX platforms, the filename-separator character is "/".
# For Win32 platforms, the filename-separator character is "\\" or "/".

# The top of the directory tree under which the engine's configuration,
# and log files are kept.
#
# Do NOT add a slash at the end of the directory path.
EngineRoot = .

# Engine's listen port. Must be > 0.
ListenPort = 9105

# Engine's local IP address to bind to. It can be used on a multi-homed host
# for a FIX Engine that will only accept connect requests to one of its addresses.
# If this parameter is commented or empty, the engine will accept connections
# to any/all local addresses.
#ListenAddress = 

# Engine's log file name.
#
# If this parameter is commented or empty, the 'engine.log' will be used. 
# LogFileName = FIXAntenna_C++.log

# Engine's local IP address to send from. It can be used on a multi-homed host
# for a FIX Engine that will only send IP datagrams from one of its addresses.
# If this parameter is commented or empty, the engine will send IP datagrams from any/all 
# local addresses.
ConnectAddress = 

# Default storage type of the created unregistered sessions. By default persistent storage 
# type used. Use "transient" value to use transient storage for the sessions.
#UnregisteredSessionStorageType =

# Number of threads that serve FIX sessions.This is independent of the number of sessions.
# Changing this value will impact upon the performance of FIX Engine. 
# The recommended value is 10. The value must be integer and greater than zero.
NumberOfWorkers = 10

# This property is the path of the directory in which the logs for all incoming 
# (if LogIncomingMessages is set to "true") and outgoing FIX messages are stored. 
# It is possible to specify a path related to the EngineRoot directory. 
# For example if LogDirectory is set to \"logs\" then the real path is $(EngineRoot)/logs.
# The specified directory must exist.
LogDirectory = logs

# Relative path to the backup folder. This folder will be used for message storage files
# of the backup connections.
BackupDirectory = logs/backup

# This property provides an option to log incoming FIX messages (those received) from 
# a counterparty FIX Engine. They will be stored in the directory specified by 
# the LogDirectory parameter in a file with extension "in".
LogIncomingMessages = true

# This parameter sets the time period after which a session is non-gracefully terminated 
# if a response is not received to a first "Logon" message (message type A). 
# The corresponding Logout message is sent to the counterparty.
# This value is in seconds. 
# The recommended value is 30 seconds for dedicated connections or private networks. 
# Trading connections via the internet will require calibration. 
# If it is set to "0", then the time period is unlimited. 
# The value must be integer and not negative.
LogonTimeFrame = 3

# This parameter sets the time period after which a session is automatically terminated 
# if a response is not received to a "Logout message" (message type 5). 
# This value is in seconds. 
# The recommended value is 10 seconds for dedicated connections or private networks. 
# Trading connections via the internet will require calibration. 
# The value must be integer and greater than 0.
LogoutTimeFrame = 3

# An option not to reset sequence numbers after Logout.
# Logout sender should initiate session recovery by sending Logon message
# with SeqNum = <last outgoing SeqNum> + 1;
# expecting reply Logon with SeqNum = <last incoming SeqNum> + 1.
# If a gap is detected, standard message recovery or gap filling process
# takes place.
IntradayLogoutTolerance = false

# This parameter controls existance of required tags in application level messages. 
# The possible values are "true" and "false". If set to "true" then all application 
# level messages are validated. If set to "false" then the responsibility for message validity 
# rests with the counterparty. Please note that session level messages are validated in 
# all cases. The recommended setting is "true".
MessageMustBeValidated = true

# This parameter specifies the delta (increment) to the Heartbeat interval between
# a TestRequest message being sent by FIX Engine and a Response Heartbeat being received. 
# The session attains a "telecommunication failed state" if no Response Heartbeat message 
# is received after the normal Heartbeat interval plus delta. For example if no message 
# (application or session level) is received during the Heartbeat interval then Engine sends 
# a TestRequest message. If the required Response Heartbeat message is not received during 
# Heartbeat interval plus Delta then the session moves to the state "Telecommunication link 
# failed". This parameter is specified in (Heartbeat Interval/100). The recommended value is 
# twenty percent.
ReasonableTransmissionTime = 20

# FIX Engine has inbuilt FIX message routing capability and  fully supports 
# the "Deliver To On Behalf Of" mechanism as specified by the FIX protocol.
# If this parameter is set to "True" then Engine will redirect FIX messages automatically 
# to other FIX sessions it maintains. 
# If this parameter is set to "False" Engine directs all messages received to the client 
# application.
ThirdPartyRoutingIsEnabled = true

# This parameter provides an option whereby FIX Engine will accept a FIX session for which it 
# has no registered application (an acceptor). If set to "true" Engine establishes a session, 
# all application level messages are rejected (Application Level Reject - type 3). When 
# an application is registered behaviour is as standard. If set to false then Logon messages 
# are ignored.
# Property is obsolete, UnregisteredAcceptor.CreateSession should be used instead.
CreateUnregisteredAcceptorSession = true 

# This parameter specifies the time interval between attempts to deliver an application level 
# message to a registered client application in the event the application does not confirm 
# receipt and operation upon the message. The value is specified in milliseconds. 
# The value must be integer and greater than 0.
# This parameter is required only if the DelayedProcessing.MaxDeliveryTries
# parameter is specified.
DelayedProcessing.DeliveryTriesInterval = 500

# This parameter specifies the number of attempts that will be made to deliver an application 
# level message to the registered client application. If this value is exceeded then 
# the session will be closed with the logout reason "Application not available". The recommended value is 10.
# The value must be integer and not negative.
# This parameter is optional.
DelayedProcessing.MaxDeliveryTries = 2

# This parameter specifies the number of attempts to restore the session.
# The session is considered as restored if the telecommunication link was
# restored and the exchange of Logon messages was successful.
# If it is set to "-1", then the number of attempts is unlimited. 
# This value is integer. 
Reconnect.MaxTries = 3

# This parameter specifies the time interval between reconnection attempts in order to restore
# a communications link. This value is specified in milliseconds (seconds*10-3). 
# The recommended value is 1000 for dedicated connections and private networks. 
# Internet connections require calibration. The value must be integer and greater than 0.
Reconnect.Interval = 300

# This parameter sets the time period after which a message rejecting is 
# starting while session isn't exists.
# Parameter isn't required. Value is specified in milliseconds (seconds*10-3), 
# must be integer and > 0.
MessageTimeToLive = 500

# The license file path.
LicenseFile=engine.license

# This parameter defines the upper limit to the number of outgoing messages that are resent 
# in the event of a Resend Request. If set to "-1" then the number of the messages is 
# unlimited. The recommended value is 1000 if no data on mean activity is known. 
#
# The value must be integer and not less than -1.
OutgoingMessagesStorageSize = 1000

# Resend Request resend messages by blocks. This parameter defines how many messages 
# procceed in block. By default parameter is 0 - all messages will be resend in one block.
# The value must be integer and not less than 0.
ResendMessagesBlockSize = 1000

# This parameter is an option whereby the version of FIX protocol used for the outgoing message
# is validated against that of the established session. If set to "true" then the application 
# must use the same version of the protocol as the established session otherwise an error 
# occurs. If set to false then the application level message will be sent to the counterparty. 
# The recommended value is "true".
CheckVersionOfOutgoingMessages = true

# If this parameter is true than file streams are flushed after each I/O operation. 
ExtraSafeMode = true


# An option to send a Logon message with the ResetSeqNumFlag set
# after each 24 hour period of session's activity to establish a new set
# of sequence numbers (starting with 1).
#
# This parameter is optional, the default value is false.
#
# NOTE:  This option does not affect sessions which use version 4.0 
# of the FIX protocol.
ResetSeqNumAfter24hours = true

# An option to write timestamps in the log files. 
#
# This parameter is optional, the default value is true.
#
TimestampsInLogs = true

# This parameter contains name of the XML file with extensions of the FIX protocols.
Validation.AdditionalFieldsFileName = additional.xml

# This parameter controls the validation of required fields in repeating group. 
# The possible values are "true" and "false". If set to "true" then repeating 
# groups will be checked for presence of required fields. 
# If set to "false" then the responsibility for repeating group validity 
# rests with the counterparty. 
# The recommended setting is "true". 
# This parameter is optional. 
# The default value is "true". 
Validation.CheckRequiredGroupFields = true

# Encryption config file
EncryptionConfigFile=encryption.properties

# This parameter allow to automatically resolve sequence gap problem. 
# When mode is ON session uses 141(ResetSeqNumFlag)
# tag in sending/confirming Logon message to reset SeqNum at the initiator or acceptor.
# Valid values:
# * "0" or "false" - Disable ForceSeqNumReset mode
# * "1" or "true" - Enable SeqNum reset at first time of session initiation
# * "2" - Enable SeqNum reset for every session initiation
ForceSeqNumReset=false

# This parameter allow to automatically reset SeqNum after every logon. 
ForceSeqNumResetOnLogon=false

# This paramter allow to resolve seqNum too low problem at logon.
# When it true - session continue with received seqNum.
#UnregisteredAcceptor.IgnoreSeqNumTooLowAtLogon = false

# When true, unregistered acceptors will reject messages in case they coudn't be sent 
# during interval
#UnregisteredAcceptor.RejectMessageWhileNoConnection = true

# When true, raw message may contains leading group tag with 0 value - it will be ignored.
# Otherwise exception was fired.
AllowZeroNumInGroup = false

# When true, the TCP buffer (Nagle algorithm) will be disabled for the unregistered 
# acceptors. Otherwise, TCP may join and enqueu small packages until timeout 
# ends.
#UnregisteredAcceptor.tcpBufferDisabled = true

# FA able to join packages that wait for sending into the socket, this paramters 
# controls how many messages could be joined. 0 means infinite. Value should be 
# less than 1000000.
#UnregisteredAcceptor.maxMessagesAmountInBunch = 0

# When true, raw message may contains tags without values - they will be ignored.
# Otherwise exception was fired.
AllowEmptyFieldValue = false

# Specifies total amount of the memory (in MB) that active session may use. 0 - means infinite.
# When limit is overbound - the "hardest" sessions will be closed nongracefully.
TotalOutgoingStorageMemoryLimit = 0


# Specified how much same ResendRequests received before Application::onResendRequestLoop is called.
# This option is disabled if value is less than 2.
DuplicateResendRequestLimit = 0


#######################################################################
# Engine monitoring
#######################################################################

# Enables/disables Engine monitoring
Monitoring.Enable = true

# Default monitoring properties

# TargetSubID (tag 57) - assigned value used to identify 
# specific individual or unit intended to receive message.
Monitoring.AdminSessionDef.TargetSubID = 

# SenderLocationID (tag 142) - assigned value used to identify 
# specific message originator's location (i.e. geographic 
# location and/or desk, trader).
Monitoring.AdminSessionDef.SenderLocationID = 

# TargetLocationID_ (tag 143) - assigned value used to identify 
# specific message destination's location (i.e. geographic 
# location and/or desk, trader).
Monitoring.AdminSessionDef.TargetLocationID = 

# The expected value of the Username (Tag 553) field in the incoming Logon message. 
# If the real value is not equal to the expected one then the session is disconnected 
# without sending a message and the error condition is generated in the log output. 
Monitoring.AdminSessionDef.Username = 

# The expected value of the Password (Tag 554) field in the incoming Logon message. 
# If the real value is not equal to the expected one then the session is disconnected 
# without sending a message and the error condition is generated in the log output. 
Monitoring.AdminSessionDef.Password = 

# The expected value of the source IP address. If the real value is not equal to the expected one 
# then the session is disconnected without sending a message and the error condition is generated 
# in the log output.
Monitoring.AdminSessionDef.SourceIPaddress = 

# The expected value of the encryption method.  
Monitoring.AdminSessionDef.EncryptMethod = NONE

# Intraday logout tolerance mode.
# An option to reset or not to reset sequence numbers after Logout.
Monitoring.AdminSessionDef.IntradayLogoutToleranceMode = false

# Force SeqNum reset mode.
# An option to use 141 tag in Logon message to reset sequence number.
Monitoring.AdminSessionDef.ForceSeqNumResetMode = false

# When true, session ignore 'SeqNum too low' at incoming Logon message 
# and continue with received SeqNum. 
Monitoring.AdminSessionDef.IgnoreSeqNumTooLowAtLogon = false

# When true TCP buffer (Nagle algorithm) will be disabled for session.
Monitoring.AdminSessionDef.DisableTCPBuffer = false

# Enqueued outgoing messages could merged and sent as a single buffer. This parameter controls 
# how many messages could be merged into the bunch. The 0 means infinite amount. 
Monitoring.AdminSessionDef.MaxMessagesAmountInBunch = 0

# Priority of the socket SendReceive operations. 
#
# Valid values:
#   * EVEN (default) - share worker thread among all session in the Engine
#   * AGGRESIVE_SEND - use dedicated thread to send outgoing messages
Monitoring.AdminSessionDef.SocketOpPriority = EVEN

# AdminSessionNames 
#Monitoring.AdminSessionNames = AdminClient

# User monitoring tool (TargetCompId = AdminClient)
Monitoring.AdminSession.AdminClient.TargetCompId = AdminClient
Monitoring.AdminSession.AdminClient.Version = FIX42
Monitoring.AdminSession.AdminClient.TargetSubID = 
Monitoring.AdminSession.AdminClient.SenderLocationID = 
Monitoring.AdminSession.AdminClient.TargetLocationID =
Monitoring.AdminSession.AdminClient.Username = sds_fix_os
Monitoring.AdminSession.AdminClient.Password = Starts123
Monitoring.AdminSession.AdminClient.SourceIPaddress = 194.10.0.54
Monitoring.AdminSession.AdminClient.EncryptMethod = DES
Monitoring.AdminSession.AdminClient.IntradayLogoutToleranceMode = true
Monitoring.AdminSession.AdminClient.ForceSeqNumResetMode = true
Monitoring.AdminSession.AdminClient.IgnoreSeqNumTooLowAtLogon = false
Monitoring.AdminSession.AdminClient.DisableTCPBuffer = false
Monitoring.AdminSession.AdminClient.MaxMessagesAmountInBunch = 10
Monitoring.AdminSession.AdminClient.SocketOpPriority = AGGRESIVE_SEND

#######################################################################
# Logger settings
#######################################################################

# Default target devices
#
# Valid values:
#   * File - messages will be written to the file. 
#   * Console - messages will be written to the console. 
#   * EventLog (Windows specific) - messages will be written to the Windows Event Log. 
#   * WinDebug (Windows specific) - messages will be written to the OutputDebugString. 
#   * Syslog (Linux/Unix specific) - messages will be written to the system log.
#
# The properties of the device are in the "Log.<name>" section. For instance Log.File contains 
# all properties of the File device.
Log.Device = File

# Enable Debug messages. 
# Valid values:
#   * true - to enable Debug messages
#   * false - to disable Debug messages
Log.DebugIsOn = true

# Enable Note messages. 
# Valid values:
#   * true - to enable Note messages
#   * false - to disable Note messages
Log.NoteIsOn = true

# Enable Warning messages. 
# Valid values:
#   * true - to enable Warning messages
#   * false - to disable Warning messages
Log.WarnIsOn = true

# Enable Error messages. 
# Valid values:
#   * true - to enable Error messages
#   * false - to disable Error messages
Log.ErrorIsOn = true

# Enable Fatal Error messages. 
# Valid values:
#   * true - to enable Fatal Error messages
#   * false - to disable Fatal Error messages
Log.FatalIsOn = true

# Enables/disables log file cycling
# Valid values:
#   * true - to enable cycling
#   * false - to disable cycling
Log.Cycling = false

#######################################################################
# Logger settings: File device
#######################################################################

# Timezone of the log message timestamp 
# Valid values:
#   * Local - display time as local
#   * UTC - display time as UTC
Log.File.TimeZone = Local

# Root directory for log files. It will be concatenated with
# each file name specified by 'Log.File.Name'
Log.File.RootDir = ./logs

# File name. If more than one category uses files with the same name
# the same file will be used simultaniously.
Log.File.Name = _log

# If set to true then lock file <Log.File.RootDir/Log.File.Name>.lock will be created. This
# will prevent other instance of the application use the same file.
#
# Valid values:
#   * true - lock log file
#   * false - do not lock log file
Log.File.Locked = false

# Enables/disables log file rotation
# Valid values:
#   * true - to enable rotation
#   * false - to disable rotation
Log.File.Rotate = false

# Local time when logs should ba backed up. Shoudl be in format 'hh:mm'
# or 'hh:mm:ss'.
# Optional.
Log.File.Backup.Time =

# If true then file will be recreated on each start.
# If false then new records will be appended to the existent file.
Log.File.Recreate = true

# If set to true then buffer will be flushed after each logging call. 
# If set to false then flush is not called.
#
# Setting to true decreases program performance; setting to false increases 
# a risk of records loss in case of program failure.
Log.File.AutoFlush = true

# String that specifies the name of the source. The source name must be a
# subkey of a logfile entry under the EventLog key in the registry. For
# example, "WinApp" is a valid source name if the registry has the following
# key: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Event Log\Application\WinApp
Log.EventLog.EventSource = TestService
See Also

Other Resources