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.

FIX server Java diagram

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).
FIX server Java Cluster

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
    • Dynamic Router

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.