FIXEdge/J 1.8.2
Jul 2, 2021
New Features and Improvements
- Optional JMX disabling
- JMX is used for monitoring and management of FEJ services. It can be switched on or off via the jmx.enable option in the fixedge.properties file.
Bugs and fixes
- Freezing of FEJ REST Admin API.
- Problem description: FEJ REST Admin API could be frozen after subscription to the session list events.
- Solution: The problem was gone after replacing the Jersey/Netty REST service with an embedded Jetty server implementation.
- FEJ doesn't reconnect the JMS endpoint.
- Problem description: FEJ doesn't try to reconnect the JMS endpoint if the connection to the JMS broker is broken.
- Solution: The reconnect logic of the JMS producer endpoint was fixed.
FIXEdge/J 1.8.1
May 26, 2021
New Features and Improvements
- Load/reload FIX sessions via administrative interfaces
- Remote Shell CLI and JMX API support a new operation on adding a new FIX session in runtime or update its configuration from configuration files.
- Log details about incoming SSL connection
- FIXEdge Java logs information about negotiated cipher suite, SSL/TLS version, and used SSL certificate for incoming secure FIX connections.
- Inject Message converters for a JMS endpoint as Spring beans
- JMS endpoint can resolve a message converter from Spring configuration by its ID.
- Start FIX Edge server without listening FIX ports
- Ports for FIX sessions can be opened/closed dynamically during FIX acceptor session start/stop. (See Extended acceptor ports management.)
- Custom Keystore format for Administrative Remote Shell CLI
- Administrative Remote Shell CLI can be configured to use secure keys from custom secure Keystores (HSM with JCA support, Bouncy Castle).
Bugs and fixes
- Message lost in JMS endpoint
- Problem description: One message is lost in case of a network interrupts between a broker and the JMS endpoint. The outgoing message wasn't returned to the queue inside the JMS endpoint due to a concurrency issue in this case.
- Solution: The queue implementation was fixed.
- An acceptor session in the DISCONNECTED state could not be started or stopped.
- Problem description: If an acceptor session had been connected first and then a counterparty broke the connection, the acceptor got the DISCONNECTED state. Anyway, it wasn't possible to start or stop such a session via administrative APIs.
- Solution: Disconnected but not stopped acceptor session gets the WAITING_FOR_CONNECTION state now. Such an acceptor session can be stopped, it gets the DISCONNECTED state and stops accepting new incoming connections.
- An acceptor session in the WAITING_FOR_CONNECTION state could not be reloaded.
- Problem description: An acceptor session in the WAITING_FOR_CONNECTION state could not be reloaded via administrative APIs due to a logical error.
- Solution: Implementation of a command for session reload was fixed.
- Messages lost after reloading an SnF session.
- Problem description: Messages from the SnF queue were not delivered after the FIX session reload. The problem was related to the SnF queue initialization and warm-up.
- Solution: The warm-up functionality for the SnF queue was temporarily disabled.
- The same JMS endpoint can be started multiple times.
- Problem description: Administrative APIs incorrectly validated an endpoint state.
- Solution: The state validation was fixed.
- JMS endpoint could not be stopped if automatic reconnect is enabled.
- Problem description: Auto-reconnect functionality for the JMS endpoint didn't count an endpoint state.
- Solution: Auto-reconnect functionality for the JMS endpoint was fixed.
FIXEdge/J 1.8.0
April 21, 2021
New Features and Improvements
- Automatic Start of endpoints
- Non-FIX endpoints (JMS, Kafka, and another) will be started with FEJ server initialization automatically. The automatic endpoint start might be changed via the
startOnload
property.
- Non-FIX endpoints (JMS, Kafka, and another) will be started with FEJ server initialization automatically. The automatic endpoint start might be changed via the
- Schedule endpoints start/stop within their configuration files
- There is no need any more to define the schedule via the schdule.xml file. It can be done within the Endpoint configuration.
- The default configuration for groups of FIX sessions
- Configuration of FIX sessions may be grouped with folders and each folder may have a separate default configuration, common for all included sessions.
- Password obfuscation in FIX storages and application logs
- Secret information is masked inside persisted FIX sessions data.
- The single authentication mechanism for all administrative interfaces
- All users for different administrative interfaces are defined within the admin-users.properties file. Access to a specific interface is defined by a user role.
- RPM and DEB packages
- FEJ system configuration files are moved to a separate folder.
- System configuration files were moved into a separate folder (sysconf) for further easier FEJ server maintenance and upgrade. User-related configs (security, endpoint, routing configuration) remained in the conf directory.
- Encrypted keys for Remote Shell configuration
- Remote Shell uses a private key for establishing connections. Private keys may be represented via protected keystores.
- Configuration values from environment variables
- Secure passwords and other important configuration values may be defined as environment variables and then used within FEJ configuration.
Bugs and fixes
- SSL acceptor session with a defined acceptor port couldn't be started.
- Problem description: The SSL FIX server instance wasn't defined and started during FEJ server initialization and thereby SSL acceptors can be connected as no opened SSL ports.
- Solution: The SSL FIX server instance is initialized during FEJ server start.
- SSL Acceptor couldn't restrict connection by a specific version of SSL protocol.
- Problem description: The configuration property
sslProtocol
works differently for an acceptor session. It defines a family of allowed SSL protocols for an acceptor. - Solution: A new
acceptedSslServerProtocols
option is added to restrict a connection via a specific SSL protocol.
- Problem description: The configuration property
- Session storage type is spontaneously changed after reloading a FIX session via FIXICC UI.
- Problem description: All FIX acceptors held the link to the same instance of the configuration object and any change of such configuration affected all acceptors sessions.
- Solution: The acceptor session receives a clone of a configuration object during its initialization.
- FEJ didn't log an error in case of failed FIX session authorization.
- Problem description: FEJ does not log a validation error if the FIX session connects with invalid credentials or without them.
- Solution: Logging of such a type of error was added.
- FEJ incorrectly interpreted empty username/password properties.
- Problem description: FEJ expected the Logon(A) message with empty Username(553) and Password(554) tags in case of username/password properties are configured without values.
- Solution: FEJ ignores username/password properties if they are empty.
- An acceptor session sent incoming username/password back.
- Problem description: An acceptor session sent an incoming username/password back, but it just had to match them with the configured ones.
- Solution: The acceptor session validates an incoming username/password and doesn't send them back in the Logon(A) answer.
- Sequence reset for FIX session via RemoteShell didn't work.
- Problem description: The "session reset <session_id>" command returned an error message and didn't reset FIX session sequences.
- Solution: The RemoteShell command is fixed.
- Invalid SSL parameters of the particular FIX session locked the entire FEJ initialization.
- Problem description: An error during starting of a FIX session with invalid SSL parameters (invalid path to key/trustStore, invalid passwords, invalid stores types, etc.) broke the scheduler thread and it failed to start the rest sessions.
- Solution: Errors during a session start are isolated.
- FEJ server couldn't be started from a folder that has a space in its name.
- Problem description: Paths in the start script wasn't properly quoted.
- Solution: The FEJ server start script is fixed.
FIXEdge/J 1.7.1
December 03, 2020
New Features and Improvements
- Integration with the FIXICC H2 web UI application to provide:
- Adding, modifying and removing session and schedule configurations;
- Managing session control operations (start, stop, restart session);
- Managing to send and change sequence number operations;
- Managing session schedules (set start and stop time for several sessions in the same schedule configuration);
Further information in the FIXICC H2 Release Notes.
- FIXEdge/J dependencies installer
- The package includes a script that installs FIXEdge/J libraries with a public API to the customer repository. This simplifies the development of custom extensions for FIXEdge/J.
Bugs and fixes
- Acceptor with a defined SSL connection couldn't be connected.
- Problem description: The secure FIX server, which should handle the incoming SSL connection, wasn't started by the default FEJ configuration.
- Solution: Management of the secure FIX server component was added.
- The invalid SSL configuration of a particular FIX session caused the start of the whole FEJ server to fail.
- Problem description: An error that occurred during FIX session start led to the failure of the whole FEJ server initialization.
- Solution: The error processing was fixed.
FIXEdge/J 1.5.1
June 1, 2020
New Features and Improvements
- Improved support for FIX Integrated Control Center.
- FIX Integrated Control Center is able to monitor and manage FIX sessions (including scheduled ones) and can reload updated session configurations without restarting FIX Edge Java. Please see more.
- SMTP endpoint is implemented.
- SMTP endpoint allows routing of FIX messages and systems events (like FIX session connect/disconnect events) to emails. Please see the documentation about SMTP Endpoint here.
Bugs and fixes
- Kafka Endpoint can't publish/consume messages in a custom format.
- Problem description: serializer/deserializer classes were hardcoded to work with FIX messages in key-value string format.
- Solution: Hardcode was removed and new interfaces for serialization/deserialization of MessageEvent instance into custom format were provided.
- The scheduler doesn't start the session in the middle of the day.
- Problem description: FIX session does not start if FEJ server has started after its start time but before its stop time.
- Solution: The scheduler logic was fixed and now it can start FIX sessions if the FEJ is started during their working hours.
FIXEdge/J 1.4.1
March 6, 2020
Bugs and fixes
- Kafka Endpoint can't be started by the scheduler.
- Problem description: All Kafka Endpoints are started right after the initialization and it's impossible to manage them later by the scheduler tasks.
- Solution: The flexibility of initialization for Kafka Endpoints was enhanced.
FIXEdge/J 1.4.0
April 3, 2019
New Features and Improvements
- Event API extension was added.
- Added the ability to pass and handle different types of events from endpoints and scheduler in groovy routing rules (handle FIX session connect/disconnect, for example).
- Integration with Apache Kafka streaming platform.
- Kafka Endpoint implementation is based on FIX Antenna Java Kafka Adapter and uses internally Kafka Producer and Consumer API.
- Integration with Apache Camel.
- Camel Endpoint is added into FIXEdge Java as a destination endpoint which allows publishing the messages to the wide range of its connectors.
- Scheduler functionality was enhanced.
- It's possible to start and stop any endpoint by its ID and trigger routing rule by the scheduler.
- Username/password validation is enabled for FIX sessions.
- Username and password properties may be defined in FIX session configuration to send them to the counterparty or to authorize the client.
- Custom FIX dictionaries for FIX sessions.
- Custom dictionaries with their own IDs for FIX sessions can be defined in the configuration now. Read more.
- JMX controls for Kafka and JMS endpoints were added.
- JMS Manager MBean and Kafka Manager MBean are accessible with JMX to monitor and control endpoints.
- Store And Forward logic can be used within a cluster.
- REPLICATED persistence mode was added to support the replication of queued messages to backup nodes.
- New options to control Store and Forward queues.
- Added new options maxNumberOfMessagesInMemory and maxQueueWaitingTimeInMsec for Store And Forward queue.
- Strategy for automatic leader election was implemented.
- The logic for election the next leader node was moved to a separate interface. It is accessible for implementation. Also a new strategy with the prioritized list of nodes was provided(TODO:link to strategy and description)
- Automatic reelection of a leader in the cluster.
- Implemented an ability to automatically choose a new leader if the previous was disappeared. This feature is disabled by default.
- Measure routing performance benchmark sample was added.
- Find a source code of sample in benchmarks directory.
- Spring Security 5.2 update
- Authorization for administrative connections gets more configuration options with Spring Security 5.2
- FIX Antenna Java 2.21.1 update.
- FIXEdge/J 1.4.0 supports all features that were introduced in FIX Antenna Java 2.21.1.
Bugs and fixes
- The invalid stale period calculation for messages in Store and Forward queue.
- Problem description: Stale period for messages in Store and Forward queue (storeAndForward.stalePeriod option) worked differently in different time zones.
- Solution: a strategy for managing 'stale' messages was fixed.
- FIX session disappears right after disconnect.
- Problem description: disposeOnDisconnect option was active by default and FIX sessions are destroyed in case of any disconnect (due to network problems for example).
- Solution: option is disabled in default FIX session configuration.
- Reconnecting FIX session doesn't stop when the cluster node is switched to backup mode.
- Problem description: When a new leader is elected in the cluster, initiator sessions, which are trying to reconnect on previous leader node, aren't stopped. As a result, it may lead to restoring FIX connection with the wrong node.
- Solution: All sessions are disposed when the cluster node role switches from leader to backup.
- FIX Endpoint may send a Heartbeat(0) message before Logon(A) on connect.
- Problem description: There was a bug in FIX Antenna Java and it may send a Heartbeat(0) message before Logon(A) for a new FIX session.
- Solution: FIX Antenna Java updated to version 2.21.1, which includes fix for sync_noqueue mode.
FIXEdge/J 1.3.0
April 3, 2019
New Features and Improvements
- Added key-value in-memory data storage.
- FIXEdge/J provides an ability to store information in the memory for purposes of message enrichment during the routing process. Please find additional information in the article In-memory data context.
- Added Store-And-Forward intermediate queue.
- FIXEdge/J provides functionality that messages are stored and forwarded in the event that a connection with one of the counterparties is dropped and messages are not delivered. For additional information please refer to the article Store and Forward Queue.
- Configuration and deployment to WildFly were added.
- Added ability to deploy and configure FIXEdge/J on a Wildfly server. For additional information please refer to the article Installation in WildFly
- Added support for session qualifiers.
- Session qualifier gives the user an ability to create several sessions with the same SenderCompId and TargetCompId.
- FIXEdge/J 1.3.0 is based on the FIX Antenna Java 2.20.0.
- FIXEdge/J 1.3.0 supports all features that were introduced in FIX Antenna Java 2.20.0.
Bugs and fixes
- FIXEdge/J does not log the session initialization/registration event.
- Problem description: FIXEdge/J creates/registers/initializes session according to the schedule. The record about this event doesn't appear in the log.
- Solution: Logging process of such events was fixed.