Convert configuration options to Markdown#1160
Merged
chrjohn merged 5 commits intoquickfix-j:masterfrom Mar 20, 2026
Merged
Conversation
Co-authored-by: chrjohn <6644028+chrjohn@users.noreply.github.com>
Co-authored-by: chrjohn <6644028+chrjohn@users.noreply.github.com>
…-to-markdown docs: convert configuration options to Markdown
Member
Author
|
@copilot check that all config options from configuration.html are included in the markdown file. If yes, you can delete configuration.html . |
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds a Markdown version of the QuickFIX/J configuration reference, converting the existing configuration options documentation into configuration.md under the user manual usage docs.
Changes:
- Added a new Markdown document describing session identification and all configuration options by category.
- Included in-page navigation (anchors) and a sample
SessionSettingsINI configuration. - Carried over extended explanations (e.g., rejecting invalid vs garbled messages) into Markdown format.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+185
to
+198
| | ID | Description | Valid Values | Default | | ||
| |----|-------------|-------------|---------| | ||
| | `SocketKeepAlive` | When the keepalive option is set for a TCP socket and no data has been exchanged across the socket in either direction for 2 hours (NOTE: the actual value is implementation dependent), TCP automatically sends a keepalive probe to the peer. This probe is a TCP segment to which the peer must respond. One of three responses is expected: (1) the peer responds with the expected ACK — TCP will send another probe following another 2 hours of inactivity; (2) the peer responds with an RST, which tells the local TCP that the peer host has crashed and rebooted — the socket is closed; (3) there is no response from the peer — the socket is closed. The purpose of this option is to detect if the peer host crashes. | `Y`<br>`N` | | | ||
| | `SocketOobInline` | When the `OOBINLINE` option is set, any TCP urgent data received on the socket will be received through the socket input stream. When the option is disabled (which is the default) urgent data is silently discarded. | `Y`<br>`N` | | | ||
| | `SocketReceiveBufferSize` | Set a hint for the size of the underlying buffers used by the platform for incoming network I/O. When used in set, this is a suggestion to the kernel from the application about the size of buffers to use for the data to be received over the socket. | Integer value | | | ||
| | `SocketReuseAddress` | Sets `SO_REUSEADDR` for a socket. This is used only for `MulticastSocket`s in Java, and it is set by default for `MulticastSocket`s. | `Y`<br>`N` | | | ||
| | `SocketSendBufferSize` | Set a hint for the size of the underlying buffers used by the platform for outgoing network I/O. When used in set, this is a suggestion to the kernel from the application about the size of buffers to use for the data to be sent over the socket. | Integer value | | | ||
| | `SocketLinger` | Specify a linger-on-close timeout. This option disables/enables immediate return from a `close()` of a TCP Socket. Enabling this option with a non-zero Integer `timeout` means that a `close()` will block pending the transmission and acknowledgement of all data written to the peer, at which point the socket is closed *gracefully*. Upon reaching the linger timeout, the socket is closed *forcefully*, with a TCP RST. Enabling the option with a timeout of zero does a forceful close immediately. If the specified timeout value exceeds 65,535 it will be reduced to 65,535. | Integer value | | | ||
| | `SocketTcpNoDelay` | Disable Nagle's algorithm for this connection. Written data to the network is not buffered pending acknowledgement of previously written data. | `Y`<br>`N` | `Y` | | ||
| | `SocketTrafficClass` | Sets traffic class or type-of-service octet in the IP header for packets sent from this Socket. As the underlying network implementation may ignore this value applications should consider it a hint. The tc **must** be in the range `0 <= tc <= 255` or an `IllegalArgumentException` will be thrown. For Internet Protocol v4 the value consists of an octet with precedence and TOS fields as detailed in RFC 1349. The TOS field is bitset created by bitwise-or'ing values such as: `IPTOS_LOWCOST (0x02)`, `IPTOS_RELIABILITY (0x04)`, `IPTOS_THROUGHPUT (0x08)`, `IPTOS_LOWDELAY (0x10)`. The last low order bit is always ignored as this corresponds to the MBZ (must be zero) bit. Setting bits in the precedence field may result in a `SocketException` indicating that the operation is not permitted. | An integer value or a set of string options separated by `\|` (e.g., `"IPTOS_LOWCOST\|IPTOS_LOWDELAY"`) | | | ||
| | `SocketSynchronousWrites` | Write messages synchronously. This is not generally recommended as it may result in performance degradation. The MINA communication layer is asynchronous by design, but this option will override that behavior if needed. | `Y`<br>`N` | `N` | | ||
| | `SocketSynchronousWriteTimeout` | The time in milliseconds to wait for a write to complete. | Integer | `30000` ms (30 seconds) if `SocketSynchronousWrites` is `Y` | | ||
| | `MaxScheduledWriteRequests` | Number of scheduled write requests on which session is forcefully disconnected. | positive Integer | `0` (disabled) | | ||
|
|
Comment on lines
+205
to
+230
| | ID | Description | Valid Values | Default | | ||
| |----|-------------|-------------|---------| | ||
| | `PersistMessages` | If set to `N`, no messages will be persisted. This will force QFJ to always send GapFills instead of resending messages. Use this if you know you never want to resend a message. Useful for market data streams. | `Y`<br>`N` | `Y` | | ||
| | `FileStorePath` | Directory to store sequence number and message files. Only used with `FileStoreFactory`. | valid directory for storing files, must have write access | | | ||
| | `FileStoreMaxCachedMsgs` | Maximum number of message index entries to cache in memory. | Integer. A zero will not cache any entries. | `10000` | | ||
| | `FileStoreSync` | Whether the `FileStore` syncs to the hard drive on every write. It's safer to sync, but it's also much slower. | `Y`<br>`N` | `N` | | ||
| | `JdbcDataSourceName` | JNDI name for the JDBC data source. This technique for finding the data source can be used as an alternative to specifying the driver details. It allows better integration with application servers and servlet containers that are already configured with JDBC data sources. | JNDI name of the data source. Configuration of the initial context must be done by an application server, through a property file or through system properties. See JNDI documentation for more information. | | | ||
| | `JdbcDriver` | JDBC driver for JDBC logger. Also used for JDBC log. | Class name for the JDBC driver. Specify driver properties directly will cause the creation of a HikariCP data source that supports connection pooling. If you are using a database with its own pooling data source (e.g., Oracle) then use the `setDataSource()` method on the Jdbc-related factories to set the data source directly. | | | ||
| | `JdbcURL` | JDBC database URL. Also used for JDBC log. | Depends on the JDBC database driver. | | | ||
| | `JdbcUser` | JDBC user. Also used for JDBC log. | | | | ||
| | `JdbcPassword` | JDBC password. Also used for JDBC log. | | | | ||
| | `JdbcStoreMessagesTableName` | Table name for messages table. | A valid SQL table name. | `messages` | | ||
| | `JdbcStoreSessionsTableName` | Table name for sessions table. | A valid SQL table name. | `sessions` | | ||
| | `JdbcLogHeartBeats` | Controls filtering of heartbeats for message logging (both in and out). | `Y`<br>`N` | `N` | | ||
| | `JdbcLogIncomingTable` | The name of the JDBC log incoming table. | valid table name | `messages_log` | | ||
| | `JdbcLogOutgoingTable` | The name of the JDBC log outgoing table. | valid table name | `messages_log` | | ||
| | `JdbcLogEventTable` | The name of the JDBC log events table. | valid table name | `event_log` | | ||
| | `JdbcSessionIdDefaultPropertyValue` | The default value for Session ID bean properties is an empty string. Oracle treats this as a SQL NULL and that causes problems. This configuration setting allows you to set the default value for unspecified Session ID properties. | Any nonempty string. | `""` (empty string) | | ||
| | `JdbcMaxActiveConnection` | Specifies the maximum number of connections to the database. | Positive number | `32` | | ||
| | `JdbcMinIdleConnection` | Controls the minimum number of idle connections that HikariCP tries to maintain in the pool, including both idle and in-use connections. If the idle connections dip below this value, HikariCP will make the best effort to restore them quickly and efficiently. | `[0, JdbcMaxActiveConnection]` | Same as `JdbcMaxActiveConnection` | | ||
| | `JdbcMaxConnectionLifeTime` | Specifies the maximum amount of time that a connection exists for before it is killed (milliseconds). | Positive | `28800000` ms (8 hours) | | ||
| | `JdbcConnectionTimeout` | Set the maximum number of milliseconds that a client will wait for a connection from the pool. If this time is exceeded without a connection becoming available, an `SQLException` will be thrown from `javax.sql.DataSource.getConnection()`. | Non-negative number | `250` ms | | ||
| | `JdbcConnectionIdleTimeout` | Controls the maximum amount of time that a connection is allowed to sit idle in the pool. Whether a connection is retired as idle or not is subject to a maximum variation of +30 seconds, and average variation of +15 seconds. A connection will never be retired as idle before this timeout. A value of `0` means that idle connections are never removed from the pool. | Non-negative number | `600000` ms (10 minutes) | | ||
| | `JdbcConnectionKeepaliveTime` | Controls the keepalive interval for a connection in the pool. An in-use connection will never be tested by the keepalive thread, only when it is idle will it be tested. | Non-negative number | `0` ms | | ||
| | `JdbcConnectionTestQuery` | Set the SQL query to be executed to test the validity of connections. Using the JDBC4 `Connection.isValid()` method to test connection validity can be more efficient on some databases and is recommended. If your driver supports JDBC4 we strongly recommend not setting this property. | Valid SQL query | | | ||
|
|
Comment on lines
+235
to
+254
| | ID | Description | Valid Values | Default | | ||
| |----|-------------|-------------|---------| | ||
| | `FileLogPath` | Directory to store logs. Only used with `FileLogFactory`. | valid directory for storing files, must have write access | | | ||
| | `FileLogHeartbeats` | Controls logging of heartbeat messages. | `Y`<br>`N` | `N` | | ||
| | `FileIncludeMilliseconds` | Controls whether milliseconds are included in log time stamps. | `Y`<br>`N` | `N` | | ||
| | `FileIncludeTimeStampForMessages` | Controls whether time stamps are included on message log entries. | `Y`<br>`N` | `N` | | ||
| | `SLF4JLogEventCategory` | Log category for logged events. The SLF4J category options support Session ID variables in the category names. The variables are: `${fixMajorVersion}`, `${fixMinorVersion}`, `${senderCompID}`, `${targetCompID}`, `${qualifier}`. For example, a category value `${senderCompID}.events` would become `BANZAI.events` in the log file if `BANZAI` is the `senderCompID` for the session. This can be used with advanced logging libraries like Log4J to create sophisticated session-specific logging policies. | Depends on log engine. The SLF4J adapter for JDK 1.4 logging is included by default. See [slf4j.org](http://slf4j.org) for other options. | `quickfixj.event` | | ||
| | `SLF4JLogIncomingMessageCategory` | Log category for incoming messages. | Depends on log engine. See `SLF4JLogEventCategory`. | `quickfixj.msg.incoming` | | ||
| | `SLF4JLogOutgoingMessageCategory` | Log category for outgoing messages. | Depends on log engine. See `SLF4JLogEventCategory`. | `quickfixj.msg.outgoing` | | ||
| | `SLF4JLogPrependSessionID` | Controls whether session ID is prepended to log message. | `Y`<br>`N` | `Y` | | ||
| | `SLF4JLogHeartbeats` | Controls whether heartbeats are logged. | `Y`<br>`N` | `N` | | ||
| | `JdbcDriver` | JDBC driver for JDBC logger. Also used for JDBC message store. | Classname for the JDBC driver. | | | ||
| | `JdbcURL` | JDBC database URL. Also used for JDBC message store. | Depends on the JDBC database driver. | | | ||
| | `JdbcUser` | JDBC user. Also used for JDBC message store. | | | | ||
| | `JdbcPassword` | JDBC password. Also used for JDBC message store. | | | | ||
| | `ScreenLogShowEvents` | Log events to screen. | `Y`<br>`N` | `Y` | | ||
| | `ScreenLogShowIncoming` | Log incoming messages to screen. | `Y`<br>`N` | `Y` | | ||
| | `ScreenLogShowOutgoing` | Log outgoing messages to screen. | `Y`<br>`N` | `Y` | | ||
| | `ScreenLogShowHeartBeats` | Filter heartbeats from output (both incoming and outgoing). | `Y`<br>`N` | `N` | | ||
|
|
| | `SocketSendBufferSize` | Set a hint for the size of the underlying buffers used by the platform for outgoing network I/O. When used in set, this is a suggestion to the kernel from the application about the size of buffers to use for the data to be sent over the socket. | Integer value | | | ||
| | `SocketLinger` | Specify a linger-on-close timeout. This option disables/enables immediate return from a `close()` of a TCP Socket. Enabling this option with a non-zero Integer `timeout` means that a `close()` will block pending the transmission and acknowledgement of all data written to the peer, at which point the socket is closed *gracefully*. Upon reaching the linger timeout, the socket is closed *forcefully*, with a TCP RST. Enabling the option with a timeout of zero does a forceful close immediately. If the specified timeout value exceeds 65,535 it will be reduced to 65,535. | Integer value | | | ||
| | `SocketTcpNoDelay` | Disable Nagle's algorithm for this connection. Written data to the network is not buffered pending acknowledgement of previously written data. | `Y`<br>`N` | `Y` | | ||
| | `SocketTrafficClass` | Sets traffic class or type-of-service octet in the IP header for packets sent from this Socket. As the underlying network implementation may ignore this value applications should consider it a hint. The tc **must** be in the range `0 <= tc <= 255` or an `IllegalArgumentException` will be thrown. For Internet Protocol v4 the value consists of an octet with precedence and TOS fields as detailed in RFC 1349. The TOS field is bitset created by bitwise-or'ing values such as: `IPTOS_LOWCOST (0x02)`, `IPTOS_RELIABILITY (0x04)`, `IPTOS_THROUGHPUT (0x08)`, `IPTOS_LOWDELAY (0x10)`. The last low order bit is always ignored as this corresponds to the MBZ (must be zero) bit. Setting bits in the precedence field may result in a `SocketException` indicating that the operation is not permitted. | An integer value or a set of string options separated by `\|` (e.g., `"IPTOS_LOWCOST\|IPTOS_LOWDELAY"`) | | |
Comment on lines
+60
to
+62
| | ID | Description | Valid Values | Default | | ||
| |----|-------------|-------------|---------| | ||
| | `BeginString` | Version of FIX this session should use | `FIX.4.4`<br>`FIX.4.3`<br>`FIX.4.2`<br>`FIX.4.1`<br>`FIX.4.0`<br>`FIXT.1.1` (which then requires `DefaultApplVerID`, see below) | | |
Comment on lines
+7
to
+15
| | Setting | Required? | | ||
| |---------|-----------| | ||
| | `BeginString` | **Y** | | ||
| | `SenderCompID` | **Y** | | ||
| | `SenderSubID` | N | | ||
| | `SenderLocationID` | N | | ||
| | `TargetCompID` | **Y** | | ||
| | `TargetSubID` | N | | ||
| | `TargetLocationID` | N | |
Comment on lines
+86
to
+90
| | ID | Description | Valid Values | Default | | ||
| |----|-------------|-------------|---------| | ||
| | `UseDataDictionary` | Tell session whether or not to expect a data dictionary. You should always use a `DataDictionary` if you are using repeating groups. | `Y`<br>`N` | `Y` | | ||
| | `DataDictionary` | XML definition file for validating incoming FIX messages. If no `DataDictionary` is supplied, only basic message validation will be done. This setting should only be used with FIX transport versions older than FIXT 1.1. See `TransportDataDictionary` and `ApplicationDataDictionary` for FIXT 1.1 settings. | Valid XML data dictionary file. QuickFIX/J comes with the following defaults in the `etc` directory: `FIXT11.xml`, `FIX50.xml`, `FIX44.xml`, `FIX43.xml`, `FIX42.xml`, `FIX41.xml`, `FIX40.xml`. | If `DataDictionary` is not specified and `UseDataDictionary=Y`, then QuickFIX/J will look for a default dictionary based on the session's `BeginString` (e.g., `FIX.4.2` = `FIX42.xml`). The `DataDictionary` file search strategy is to use a URL, then the file system, and then the thread context classloader (if any), and then the `DataDictionary` instance's classloader. Default data dictionary files are included in the QuickFIX/J jar file. | | ||
| | `TransportDataDictionary` | XML definition file for validating admin (transport) messages. This setting is only valid for the FIXT 1.1 (or newer) sessions. See `DataDictionary` for older transport versions (FIX 4.0–4.4) and for additional information. | Valid XML data dictionary file path. | If no dictionary path is supplied, an attempt will be made to load a default transport dictionary. | |
Comment on lines
+113
to
+116
| | ID | Description | Valid Values | Default | | ||
| |----|-------------|-------------|---------| | ||
| | `ReconnectInterval` | Time between reconnection attempts in seconds. Only used for initiators. | positive integer | `30` | | ||
| | `HeartBtInt` | Heartbeat interval in seconds. Only used for initiators. | positive integer | | |
Comment on lines
+168
to
+175
| | ID | Description | Valid Values | Default | | ||
| |----|-------------|-------------|---------| | ||
| | `ProxyType` | Proxy type. | `http`<br>`socks` | | | ||
| | `ProxyVersion` | Proxy HTTP or Socks version to use. | For socks: `4`, `4a` or `5`<br>For http: `1.0` or `1.1` | For socks: (none)<br>For http: `1.0` | | ||
| | `ProxyHost` | Proxy server hostname or IP. | valid IP address in the format of `x.x.x.x` or a domain name | | | ||
| | `ProxyPort` | Proxy server port. | positive integer | | | ||
| | `ProxyUser` | Proxy user. | | | | ||
| | `ProxyPassword` | Proxy password. | | | |
Member
Author
|
@copilot open a new pull request to apply changes based on the comments in this thread |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.