FIXEdge Java

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 part of its functionality, including zero GC and strong optimization for low latency FIX messages processing. 

 

FEJ Diagram

View larger image

 

 

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,
    • Standard FIX authorization on session level using username and password fields in FIX Logon message.
  • 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 JavaWindows- 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, which 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 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.

 Additional connectivity solutions can be introduced by request.

Persistent API

  • Provides easy and fast way to storing data withPersistentSequence and PersistentQueuestorages.
  • FIX Antenna Java is already integrated with Persistent API:
    • supports transient sessions, which do not use any persistence. This significantly increases performance giving up recovery. Applicable when recovery is not required (e.g. for market data) or when persistence is done by the 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.

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.

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

Platforms

  • Any platform with a JVM (Java Virtual Machine) available


 

Cluster Management 

  • Automatically resolves and registers FEJ servers as cluster nodes, monitors their state;
  • Defines primary node automatically at 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 purpose.

Replication service maintains backup copies of primary's Persistence API storages and supports 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).

 

FEJ High Availability

View larger image

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

 

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 administrative session;
  • Friendly XML-based DSL for administrative instructions: easy to read, easy to extend;
  • Rich monitoring and administration GUI (FIXICC) out of the box.

Administration functionality can be extended to manage each FEJ module separately.