quickfix: есть ли способ получить входящие / исходящие / пульсирующие сообщения в коде - PullRequest
0 голосов
/ 04 мая 2018

Я использую библиотеку quickfixj (1.6.4). Я вижу все сообщения, разделенные очень правильно (входящие / исходящие / события)

<20180504-07:32:14, FIX.4.2:CLIENT2/SUB-> , event> (Session FIX.4.2:CLIENT2/SUB->  schedule is daily, 00:00:00-UTC - 00:00:00-UTC) <20180504-07:32:14, FIX.4.2:CLIENT2/SUB-> , event> (Created session: FIX.4.2:CLIENT2/SUB-> ) <20180504-07:32:15, FIX.4.2:CLIENT2/SUB-> , event> (Configured socket addresses for session: [/x.x.x.x:xxxx]) <20180504-07:32:15, FIX.4.2:CLIENT2/SUB-> , event> (MINA session created: local=/y.y.y.y:yyyy, class org.apache.mina.transport.socket.nio.NioSocketSession, remote=/x.x.x.x:xxxx) <20180504-07:32:16, FIX.4.2:CLIENT2/SUB-> , outgoing> (8=FIX.4.29=7935=A34=149=CLIENT252=20180504-07:32:16.386) <20180504-07:32:16, FIX.4.2:CLIENT2/SUB-> , event> (Initiated logon request) <20180504-07:32:16, FIX.4.2:CLIENT2/SUB-> , incoming> (8=FIX.4.29=8035=A34=1) <20180504-07:32:16, FIX.4.2:CLIENT2/SUB-> , event> (Logon contains ResetSeqNumFlag=Y, resetting sequence numbers to 1) <20180504-07:32:16, FIX.4.2:CLIENT2/SUB-> , event> (Received logon)

Как бы то ни было, я не могу найти способ получить эти сегрегированные сообщения как есть в моем коде.

PS: Я копаю глубже и дошел до ScreenLogFactory.java, который в конечном итоге, похоже, регистрирует то, что я вижу в журналах консоли. Но не смог найти способ извлечь эти входящие / исходящие сообщения в моем коде.

Edit1: Как я могу перехватить сообщения уровня сеанса?

Заранее спасибо.

1 Ответ

0 голосов
/ 04 мая 2018

Чтобы запустить SocketInitiator, вам нужно было передать ему экземпляр quickfix.Application. В вашей реализации вы можете посмотреть сердцебиение в реализации toAdmin и fromAdmin.

class YourFixApplication implements Application {
    @Override
    public void fromAdmin( Message message, SessionID sessionID ) {
        MsgType msgType;
        try {
            msgType = (MsgType) message.getHeader( ).getField( new MsgType( ) );
        }
        catch( FieldNotFound e ) {
            e.printStackTrace();
            return;
        }
        if( msgType.valueEquals( MsgType.HEARTBEAT ) ) {
            System.out.println( ">>> Heartbeat <<<" );
        }
    }

    // same deal with toAdmin implementation

    // ...
}
...