QuickFIX/J Documentation

repository·master·Indexed 22 days ago

https://github.com/quickfix-j/quickfixj

A complete Java implementation of the FIX (Financial Information eXchange) protocol engine supporting versions 4.0 through 5.0SP2 and FIXLatest. The project includes the core engine (quickfixj-core), foundational classes (quickfixj-base), and various message artifacts for different FIX specifications. It provides tools for custom builds, including a code generator Maven plugin and orchestration support for FIX Latest and FIX T1.1.

Tokens
23.4K
Snippets
32
Records
81
Agent score
77%

What's inside QuickFIX/J

  1. Overview of QuickFIX/J

    master
    QuickFIX/J is a full-featured, 100% Java open-source messaging engine for the FIX protocol. It is an implementation of the popular C++ QuickFIX engine and supports FIX versions 4.0 through 5.0SP2/FIXT1.1 and FIXLatest. The Financial Information eXchange (FIX) protocol is a standard for the real-time electronic exchange of securities transactions.
  2. Overview of quickfixj-core

    master

    The quickfixj-core module contains the main QuickFIX/J FIX engine and its supporting capabilities. It is built upon the quickfixj-base module.

    Crucially, quickfixj-core has a test dependency on generated message classes. This design choice is intended to facilitate easier customization of QuickFIX/J deployments by decoupling the core engine from specific message implementations during standard development.

  3. Understand the QuickFIX/J Messages module organization

    master

    The quickfixj-messages module provides reference artifacts for various FIX specification versions. It is organized into several modules to allow users to depend only on the specific FIX versions they need at runtime, rather than the entire suite.

    Available Modules

    • quickfixj-messages-fixt11: FIX Transport Layer 1.1.
    • quickfixj-messages-all: Generates and compiles classes for all FIX protocol major versions.
    • quickfixj-messages-fixlatest: The most recent FIX specification.
    • quickfixj-messages-fix50sp2, quickfixj-messages-fix50sp1, quickfixj-messages-fix50: FIX 5.0 variants.
    • quickfixj-messages-fix44, quickfixj-messages-fix43, quickfixj-messages-fix42, quickfixj-messages-fix41, quickfixj-messages-fix40: Legacy FIX versions.

    Key Architectural Concepts

    • Version Agnosticism: QuickFIX/J core supports multiple concurrent FIX versions. Messages and Components are compositions of Maps of quickfix.Fields.
    • Package Structure: Messages and Components reside in distinct packages corresponding to their FIX protocol version. The quickfix.Fields package is common across all versions.
    • Dependency Management: Generated code depends on quickfixj-base. To avoid runtime class-loader conflicts, certain Standard Header and Trailer fields provided by quickfixj-base are removed from the generated code in other artifacts during assembly.
    • FIX Latest & FIX T1.1: These are generated from a FIX Orchestra "repository" file using the quickfixj-orchestration module.
  4. Use FIX 5.0 message artifacts

    master

    This module provides the Java artifacts (JARs) containing the Messages, Components, and Fields specifically for the FIX 5.0 specification.

    Note that in FIX versions 5.0 and later, the FIX Session layer is architecturally separated from the Application Message layer. To prevent class duplication and conflicts, the FIX Session layer classes are excluded from these specific artifacts. Instead, you should use the QuickFIX/J reference implementation's shared Session layer JAR as a dependency alongside these FIX 5.0 message artifacts.

  5. What is QuickFIX/J support for FIX Orchestra?

    master

    This module provides support for the FIX Orchestra standard by publishing a QuickFIX/J compatible FIX dictionary and a QuickFIX/J FIX "orchestration".

    An "orchestration" is an implementation of a FIX Orchestra standard repository. This specific module depends on the FIX Latest standard orchestration published by the FIX Trading Community. It uses XSL transformations to clean the standard repository (removing problematic elements and updating CodeSet names) to ensure compatibility with the QuickFIX/J build process.

  6. Understand the role of the quickfixj-base module

    master

    The quickfixj-base module provides the foundational Java classes that all generated QuickFIX/J Fields, Components, and Messages depend on.

    It specifically contains a small number of generated Fields required by the Standard Header and Standard Trailer. Because these fields are part of the core protocol structure, they are generated and compiled within this module to ensure they are available in the resulting JAR artifact.

    Important for Compatibility: To ensure Java runtime compatibility, do not include these specific core Fields in other QuickFIX/J or custom artifacts. They are intended to be provided solely by the quickfixj-base module.

  7. Compare Single-Threaded vs Thread-Per-Session strategies

    master

    Use the following comparison to decide which QuickFIX/J component to instantiate based on your requirements:

    FeatureSocketAcceptor / SocketInitiator
    Message processingSingle shared thread
    Application thread-safety requiredNo
    Session isolationNo
    Typical use caseFew sessions, simple apps
    FeatureThreadedSocketAcceptor / ThreadedSocketInitiator
    Message processingOne thread per session
    Application thread-safety requiredYes
    Session isolationYes
    Typical use caseMany sessions, independent processing