2013-10-07 3 views
0

Я делаю что-то с протоколом fix, используя библиотеку fastfix.событие quickfix после отправки сообщения

Я написал класс как это:

public class ApplicationImpl implements Application { 
... 
    @Override 
public void toApp(Message arg0, SessionID arg1) throws DoNotSend { 
    //this is invoked before sending message 
} 
... 
} 

Интересно, как вызвать некоторый метод после отправки сообщения?

ответ

1

QuickFIX не предлагает обратный вызов после отправки сообщения.

0

Вы должны иметь это где-то в коде, чтобы отправить сообщение (не в переопределенных методов):

Session.sendToTarget(outgoingMessage, orderSession); 

Это будет выполнять некоторый внутренний код quickfixJ и затем вызвать toApp(). Метод toApp() позволяет вам модифицировать сообщение до его отправки броузеру. Но в идеале, чтобы что-то сделать после отправки, вам просто нужно добавить код после звонка в Session.sendToTarget().

+0

Да, я знаю, как отправить сообщение, но я ищу класс, который обеспечивает обратный вызов после отправки сообщений на сервер. Код после Session.sendToTarget() может выполняться перед отправкой сообщения. – Nyger

+0

Я так не думаю, что довольно верно sendToTarget не вызывает новый поток. Но кроме того, какая разница в этом плане? – robthewolf

+0

В методе toAdmin я перехватываю передачу Heartbit, а затем отправляю сообщение. К сожалению, в журналах (предоставляется ScreenLogFactory) мое сообщение появляется перед Heartbit. – Nyger

0

Если вы предприимчивы, вы можете изменить QuickFIX/J, чтобы сделать это. Сетевой уровень MINA обеспечивает обратный вызов messageSent. Если вы переопределите этот метод в инициаторе QFJ InitiatorIoHandler (или AcceptorIoHandler), вы можете либо напрямую обработать событие messageSent, либо распространить его на модифицированный интерфейс приложения.

Смежные вопросы