Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Logically FIXEdge server is a router that routes messages from a source system to a destination system. The following diagram demonstrates data flow for the case managed queue is used. Messages from a source system are parsed and put into the business layer. BL rule is executed and messages that fit the rule are moved to a certain virtual session. Each virtual session is actually a queue. If a virtual session is open (connected to a target session) the message is moved to the target session immediately. If a virtual session is closed (disconnected from a target session) then the message is stored in the queue. The smart logic is applied. The virtual session connects to a target session or disconnects from a target session according to a schedule configured for a virtual session. The target session may also have a schedule. If the target session is not established then messages stay in the queue and are released when the target session is established.

All messages are persistently stored in SQLite database.

SQLite database schema

SQLite database is used to store queued messages. Default DB name is fe.db. The filename and the path to it can be configured with property FixLayer.<managed_queue_name>.Storage.SQLite.FileName

Messages of all queues, sent to all sessions, are stored within a single table – “QueueStorage”. Messages that are delivered or removed are marked in corresponding columns.

...

Note

Please pay special attention to the changes in the behavior depending on CheckVersionOfOutgoingMessages in the engine.properties file.

The value of the ParserVersion property set property in force for the session at the time when messages were put to the message messages queue is stored along with messages in the queue and is used to parse messages stored and therefore it must be still valid (the parser should remain to be configured) at the time when messages are released from the queue.

...

From the routing perspective, the BL rule for routing to a virtual session is similar to an ordinary BL routing configuration.

The example of BL rule for routing from RestAcceptorClient_Queueing source to MQDEST-XMIC-PreOpen virtual session:

...

Property

Description

FixLayer.<managed_queue_name>.Storage.Type

Type of storage where incoming messages are stored.

FixLayer.<managed_queue_name>.Storage.SQLite.FileName

The filename of storage. It's a relative path from the FIXEdge root directory specified with the parameter FIXEdge.RootDir

FixLayer.<managed_queue_name>.Storage.SQLite.BusyTimeoutMs
Timeout in milliseconds to wait before the set busy condition of the DB in case of concurrent access. The default value is the SQLite default, usually 30 seconds. Optional.

...

The target session is configured as an ordinary FIX session.

Target session properties example:

...

  • Matching incoming Cancel with queued Order, deleting both, and sending confirmation to BL.
  • Cancel/Replace queued Order – send Cancel Reject message, the order stays in the queue

For details see order flow scenarios.

Logic in the module is hardcoded, but it can be replaced via the FIXEdge plugin system. Smart logic can be turned on/off for all sessions simultaneously.

...

The SQLite database file location is configured with the parameter FixLayer.<managed_queue_name>.Storage.SQLite.FileName

How to list names of tables matching LIKE pattern TABLE

...