FIXEdge® Java (FEJ) is an application server providing FIX
connectivity. Orders routing to multiple destinations, receiving
and distributing executions to internal systems, fanning out quotes
and receiving market data, capturing and reporting trades are just
few use case examples covered by FEJ. Unique internal architecture
allows supporting balance between flexibility and high-performance
requirements.
FEJ is also used as a generic message switch, as an integration
server, routing and converting data between different FIX protocol
versions and /or XML. Its open architecture allows plugin modules
to integrate proprietary transport and data formats.
FEJ's FIX sessions management mechanism is built on top of FIX Antenna
Java and inherits most parts of its functionality, including
zero GC and strong optimization for low latency FIX message
processing.

Features
Feature |
Description |
FIX support
|
- 100% FIX standard compliance: FIX 4.0, 4.1, 4.2, 4.3, 4.4, 5.0,
5.0 SP1, 5.0 SP2, FIXT1.1
- Supports
- All FIX message types (pre-trade, trade, post-trade, market
data),
- FIX dialects with user-defined tags and message types.
|
Sessions management
|
- Provides
- Ability to manage multiple sessions,
- Ability to configure each session separately or/and by
groups,
- Standard FIX authorization on the session level using username
and password fields in the FIX Logon message.
- Smart session scheduling:
-
- CRON expressions for sessions schedule accurate to the
second
- Support of different time zones
- Ability to assign one schedule to multiple sessions or
configure it per session
- FIX sessions management is based on FIX Antenna
Java functionality.
|
Performance
|
- FEJ is highly optimized for FIX messages processing;
- FIX message routing latency is close to FIX Antenna Java
performance;
- FEJ utilizes zero GC.
Please refer to the latest benchmarks of FIX Antenna
Java, Windows- and Linux-based.
|
Delivery modes
|
- Supports later delivery and rejecting modes:
- Later delivery mode stores unsent messages in the queue and
delivers them later, when connection is re-established.
- Rejecting mode rejects messages that cannot be sent during some
reasonable and customizable time period.
|
Message routing and transformation
|
- Predefined rules describe message routing and transformation:
- There are no limits on the number of rules applied to an
incoming message;
- A rule can filter, process, transform, send and reject the
messages;
- Rules are defined via Java code and / or via Groovy
scripts.
- Supports
- Easy handling of repeating groups during FIX messages
processing and transformation;
- FIX to FIXML transformation.
|
FIX message routing
|
- Supports
- Standard FIX routing based on DeliverTo and
OnBehalfOf tags;
- FIX sessions grouping and message routing within one
group;
- Redirection of FIX messages from one group to another.
|
Connectivity
|
Provides the ability to integrate custom 3rd-party transports
and use them for routing messages. Currently supports
- possibility to configure FIX connection to any FIX source via
FIX Adaptor,
- connectivity to CME iLink,
- connectivity to JMS sources via JMS Adaptor,
- connectivity to Kafka
via Kafka Adaptor providing pub/sub mechanism for Kafka topics.
Kafka Adaptor performs packaging and extracting of FIX messages
to/from Kafka
Messages. More details
here.
Additional connectivity solutions can be introduced by
request.
|
Persistent API
|
- Provides easy and fast way to store data
withPersistentSequence and
PersistentQueuestorages.
- FIX
Antenna Java is already integrated with Persistent API:
- supports transient sessions that do not use any persistence.
This significantly increases performance while forgoing recovery.
Applicable when recovery is not required (e.g. for market data) or
when persistence is done by application logic.
- Customer can easily leverage Persistence API and create
proprietary storage.
|
Security
|
- Uses simple login/password authentication by default;
- Spring Security framework is used for authentication
purposes;
- Supports authentication against LDAP server;
- Provides built-in SSL/TLS support.
- FIX acceptor sessions can have dedicated port
- An initiator can use a certificate signed by counterparty's CA
certificate for authentication
- Ability to configure SSL/TLS protocols and ciphers for secure
connections (See
secure connections configuration for details)
|
Monitoring and administration
|
- FEJ administration is performed via interactive shell (SSH) and
JMX.
- Built-in remote monitoring and administrative interface for
sessions' monitoring and management inherited from FIX Antenna
Java can be used also.
- FEJ administration is performed via interactive shell (SSH),
JMX and
REST API
- Email alerting and notifications on Business Layer
- Rich monitoring
and administration GUI out of the box
|
High availability
|
- Supports work in cluster with replication, failover and
recovery functionality.
|
Modularity
|
- FEJ has a modular structure and each module can work
independently or be coupled with other modules, depending on
requirements or customer's needs.
|
Packaging
|
FEJ is distributed as an archived package that includes:
- Binaries (executable and libraries)
- Scripts to register/unregister/start/stop FEJ as a
service/daemon
- Default configuration files
- Documentation
- FIXEdge package is available as Linux native installation
package (DEB, RPM)
|
Platforms
|
- Any platform with a JVM (Java Virtual Machine) available
|
High Availability
Cluster Management
- Automatically resolves and registers FEJ servers as cluster
nodes, monitors their state;
- Defines the primary node automatically at the initial start of
the cluster;
- Provides monitoring and management of FEJ servers;
- Controls failover activities on a single node.
Failover and Recovery service supports
controlled manual failover for maintenance purposes.
Replication service maintains backup
copies of primary's Persistence API storages and supports an actual
and ready-to-work copy of current data on standby servers within
the cluster. Replication supports synchronous and asynchronous
modes for certain FIX sessions.
- Synchronous replication is recommended when data loss is
critical (e.g. for order processing).
- Asynchronous replication is recommended when performance is
very important, while the clear data is not essential, or data can
be restored for other sources (e.g. for market data
processing).

Modularity
All major functionality of FEJ is implemented as a set of
independent modules, which can be enabled or disabled separately.
Each module is configurable and extendable.
Modules list:
- Transport modules
- Service modules
- Persistence API
- Cluster Manager
- Replication
- Monitoring
- Configuration
- Scheduling
- Logging
- Rule Engine module
Administration
Interactive shell and JMX are used for FEJ administration. Major
FEJ specific administration functions are:
- Start and stop FIX server;
- Manage FIX connectivity on server and session levels;
- Manage cluster service.
For logs generation FEJ uses Log4j2 logging framework.
Built-in remote monitoring and administrative interface for
sessions monitoring and management, inherited from FIX Antenna
Java:
- Utilizing FIX protocol and the same FIX listen port for an
administrative session;
- Friendly XML-based DSL for administrative instructions: easy to
read, easy to extend;
- Rich UI for monitoring session statuses and parameters in real
time on desktop app or web browser.
Administration functionality can be extended to manage each FEJ
module separately.