Есть ли способ воспроизвести сообщения quickFIX / J - PullRequest
3 голосов
/ 15 марта 2012

Есть ли способ воспроизвести сообщения из quickFIX / J в файле * messages.log?

Похоже, этот вопрос был задан некоторое время назад, но я удивляюсь любым новым разработкам:1003 * Сохранять и воспроизводить сообщения WCF

Цель состоит в том, чтобы иметь возможность повторно запускать сообщения, даже если другая сторона соединения FIX недоступна.

1 Ответ

0 голосов
/ 08 ноября 2012

Хотя я не мог повторить сообщения FIX в моей настройке, я смог «повторить» их, используя модульные тесты и используя свой собственный простой приемщик с примерами из руководства QuickFIX / J .

Я создал простой акцептор с «FooApplication» для получения сообщений и ответа / насмешки над некоторыми QuoteRequests

public static void main(String[] args)  throws Exception {
    // FooApplication is your class that implements the Application interface
    FooApplication application = new FooApplication();

    SessionSettings settings = new SessionSettings(new FileInputStream(fileName));
    MessageStoreFactory storeFactory = new FileStoreFactory(settings);

    LogFactory[] logFactories = new LogFactory[] {new FileLogFactory(settings)};
    LogFactory logFactory = new CompositeLogFactory(logFactories);

    MessageFactory messageFactory = new DefaultMessageFactory();
    Acceptor acceptor = new SocketAcceptor(application, storeFactory, settings, logFactory, messageFactory);
    acceptor.start();

}

Затем, используя модульные тесты, я запускаю FooInitiator и вызываю, например, sendLogout () из FooClient

public class FooClient extends quickfix.fix42.MessageCracker implements quickfix.Application {

    // sendQuoteRequest

    // sendNewOrderSingle

    private boolean sendMessage(Message message) {
    boolean result = false;
    try {
        result = Session.sendToTarget(message, session);
    } catch (SessionNotFound e) {
        logger.error("FooApplication SessionNotFound", e);
        result = false;
    }
    return result;
    }

    public boolean sendLogout() {
        return sendMessage(new Logout());
    }
}

Если вы просматриваете журналы сообщений FIX, возможно, вы захотите проверить, не знаете ли вы HermesJMS его бесплатный и открытый исходный код.

...