Skip to content

Multi-Host FIX Engine and Library #495

@markkoszykowski

Description

@markkoszykowski

Working on implementing artio into a project in a multi-host setup with the FIX Engine (running as a gateway) on one machine and the FIX Library (with app-specific logic) on another. This Wiki page explains that this should be possible using a UDP Aeron channel, and given artio's architecture using Aeron (with the option to use IPC or UDP) it makes sense to be configurable in a Single- or Multi- Host setup.

However, in practice I am having difficulty setting this up. In one Docker container I have configured a basic program running an ArchivingMediaDriver along with a FixEngine. In another container I have configured a MediaDriver and a FixLibrary that is polling. I have tried configuring the EngineConfiguration.libraryAeronChannel and the LibraryConfiguration.libraryAeronChannels in every unicast configuration using the two hostnames of the containers (see below for details) to no avail.

Looking through the source code, it looks like the FixEngine and the FixLibrary were designed to run on the same machine as each component Subscribes and Publishes to this Aeron channel. Perhaps I am misconfiguring or misunderstanding, some direction or perhaps even samples would be much appreciated.




tldr;

Aeron channel configs tried:

EngineConfiguration.libraryAeronChannel LibraryConfiguration.libraryAeronChannels Issue
aeron:udp?endpoint=<engine_host>:<port> [ aeron:udp?endpoint=<engine_host>:<port> ]
  • Library fails with a java.net.BindException
aeron:udp?endpoint=<engine_host>:<port> [ aeron:udp?endpoint=<library_host>:<port> ]
  • Engine and Library never connect
aeron:udp?endpoint=<library_host>:<port> [ aeron:udp?endpoint=<engine_host>:<port> ]
  • Library fails with a java.net.BindException
  • Engine never initializes and halts
aeron:udp?endpoint=<library_host>:<port> [ aeron:udp?endpoint=<library_host>:<port> ]
  • Engine never initializes and halts

(I am aware that setting different Aeron channels would not even make sense, however I have tested and listed them to be as thorough as possible.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions