Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multi-Host FIX Engine and Library #495

Open
markkoszykowski opened this issue Sep 27, 2023 · 0 comments
Open

Multi-Host FIX Engine and Library #495

markkoszykowski opened this issue Sep 27, 2023 · 0 comments

Comments

@markkoszykowski
Copy link

markkoszykowski commented Sep 27, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant