SF SackFix

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.


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.


PendaRed /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.


PendaRed /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.


PendaRed /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.


PendaRed /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.


PendaRed /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.


See the LICENSE file