SackFix is a Scala Fix Engine (also using Akka). It is not low latency or zero GC - message processing taking about 500 micro seconds to 3ms depending on the log levels you have enabled.
Originally created in 2017 to learn Scala and Akka, it was updated in 2021 to Scala 2.13 and Akka.typed. At some point a Scala 3 migration seems likely.
Overview
Doing a full Fix implementation creates a lot of projects, the ones below are all part of the SackFix family, but you will find yourself using sackfixexamples and nothing else, unless you want to edit the code that makes up sackfix.
Click here for a full set of features implemented in sackfixsessions and some of the features missing. For details on what you have to actually code and handle read about coding the business object.
sackfixtests
An independent implementation of the test suite published by the Fix folks. It uses a very simple couple of classes to implement the Fix client and tests that the Session level protocol obeys the fix spec.
sackfixexamples
You have to check this out. You can start up the acceptor, run the tests against it. Then start up the initiator, and send millions of NOS and Exec reports back and forth, look at Diving In for the actor you will implement when using SackFix.
sackfixsessions
The common package is a full implementation of an acceptor, initiator and all of the state machines needed to support the session level protocol.
sackfixmessages
Purely code generated code for every version of fix. You should import the version of fix which you want to use. Sackfix does not have a classloader for different fix versions within a single JVM.
sackfix
The code generator, and the common project holding fields and common utilities
Show me the code
Look at Diving In to quickly get a look at the business object you will code, and how to embed SackFix in your own projects.
License
See the LICENSE file