Versions Compared

Key

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

Table of Contents

...

New Features and Improvements

  • Expand
    titleThe ability Ability to create and use routing and event Groovy DSL BL use Domain Specific Language to define business rules.

    FIXEdge Java now provides the ability to create and use routing and event Groovy DSL rules on Business Layer.

    Routing rules are the main elements in the FIXEdge Java configuration file. They contain instructions for:

    • Routing of incoming and outgoing FIX messages.
    • Filtering of incoming and outgoing FIX messages.
    • Transformation of incoming and outgoing FIX messages.

    More than one rule can be applied to a message. It is also possible to route one message to multiple destinations or to the same destination multiple times. All rules are applied to each FIX message independently in the order set in the configuration file.

    Event rules are a special kind of business rule that handle events launched during execution. The following FIXEdge Java events can be processed:

    • FixSessionStateEvent
    • NewSessionEvent
    • RuleErrorEvent
    • ScheduleEndpointEvent
    • SchedulerEvent
    • SnfEvent
    • UnprocessedMessageEvent
    • Custom

    use Domain Specific Language to define business rules.

    Groovy DSL (Domain Specific Language) allows non-programmers to intuitively author and maintain business rules for FIXEdge Java in a much simpler way compared to programming in pure Groovy or Java.

    Groovy DSL covers most use cases in FIX protocol-defined workflows: routing to endpoints, FIX message transformation, and handling of important session management events. It supports both a declarative style of writing rules for unconditional routing “from <endpoint A> to <endpoint B>” and an imperative style where DSL conditional logic and executable actions are expressed explicitly for a given session and selected set of fields. The DSL message rules are defined by the description and bound for the processing of incoming messages from a particular session or group of sessions.

    The DSL-defined business rules are stored in a way similar to the rules expressed in Groovy or Java. The rules.groovy configuration file allows mixing and matching DSL with pure Groovy and Java code for backward compatibility and complex cases with message enrichment. The processing of DSL-expressed rules is as efficient as Groovy and Java written rules.

Transport Adapters

  • Expand
    titleThe ability to configure and run WebSockets TA.

     FIXEdge Java now provides the ability to configure and run WebSockets TA.

    WebSocket endpoints provide FIXEdge Java clients with the ability to establish a connection between the server-acceptor and client-initiator and then send and receive data from/to them. During start-up, FIXEdge Java initiates the Jetty server and endpoints defined in the websocket-adaptor.properties file: WebSocketServlets for acceptors and WebSocketClients for initiators. To add a new WebSocket endpoint to the websocket-adaptor.properties file, its configuration must be defined and its name must be added to the websocket.clients list.

    WebSockets TA also provides the ability to perform FIX-to-JSON and JSON-to-FIX message conversion. To enable the JSON converter for WebSocket TA the converter.dictionary.json.init property must be set to 'true' in the msg-converter.properties file.

FIX Protocol Changes

  • Expand
    titleThe 'FIXLatest' application version of FIX protocol.
    • New value 10 = FIXLatest for 1128 and 1137 tags was added.
    • A new dictionary fixdiclatest.xml was introduced.
    • FIXT11 standard dictionary was updated to support the FIXLatest version.
  • Expand
    titleValidation of 1137 and 1408 tags in incoming Logon messages.
    • Implemented support of CstmApplVerID (1129) tag when serializing/parsing FIX messages to identify the FIX message dialect when non-default protocol dialect in the parser is used.
    • Implemented support of DefaultCstmApplVerID(1408) tag in Logon message when non-default protocol dialect in the parser is used as the default for FIX session.

...

Fixed Bugs

  • Fixed the issue when the SeqNums of the session were not displayed when it was stopped via FIXICC H2.

...

  • There is no ability to disable the BouncyCastle security provider.
    • Problem description: The BouncyCastle security provider is used by Administrative Remote Shell CLI by default. There was no possibility to disable this security provider (if a user wanted to use their own).
    • Solution: The option org.apache.sshd.registerBouncyCastle was fixed for disabling the registration of the BouncyCastle security provider.
  • Remote Shell Command "server opts" prints invalid information about opened FIX ports.
    • Problem description"server opts" command output was corrupted.
    • Solution: The command output was fixed to print a list of opened ports.
  • JMS Producer doesn't reconnect automatically.
    • Problem descriptionJMS Producer stopped reconnecting when an exceptional connection break occurred.
    • Solution: The reconnect logic was fixed.
  • Race conditions in JMS Producer after reconnect.
    • Problem description: JMS Producer did the reconnect procedure in two separate threads and started two sending threads at the same time.
    • Solution: The reconnect logic was fixed.
  • Incorrect value for the QueueMaxFileSize property for JMS clients.
  • The JMS Producer loses messages during reconnect.
    • Problem description: The JMS Producer was occasionally losing messages when it wasn't able to convert them to a JMS Message object.
    • Solution: The error handling logic was fixed.
  • The JMS Producer started but is not operable if its queue file is corrupted.
    • Problem description: The JMS Producer ignored problems with JMS queue initialization (queue file was corrupted). This led to the continuous problem with sending data by that Producer as data couldn't be added to the queue.
    • Solution: The JMS Producer fails to start if it has problems with its initialization.

...

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.
  • 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 descriptionFEJ 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 Remote Shell CLI didn't work.
    • Problem description: The "session reset <session_id>" command returned an error message and didn't reset FIX session sequences.
    • Solution: The Remote Shell CLI 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.

...

  • 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.

...