我正在为某些业务逻辑使用中断器,这些逻辑会发布到另一个处理 IO 的中断器。发布到 IO 中断器的事件可能到达太快,无法构建和验证 IO。嗯,这就是重点……
IO 中断器的设置如下:
disruptor = new Disruptor<>(factory, RING_SIZE, executor, ProducerType.SINGLE, new BlockingWaitStrategy());
disruptor.handleEventsWith(new Logic(disruptor, io));
然后逻辑事件处理程序设置如下:
public void onEvent(FixEvent event)
{
quickfix.Message ioMessage = event.message;
quickfix.SessionID receiver = event.session;
Log.debug("message: " + event.message.toString());
SessionID id = new SessionID(receiver.getBeginString(), "MYFX", receiver.getTargetCompID());
Session session = Session.lookupSession(id);
Log.debug("message: " + ioMessage.toString());
session.send (ioMessage);
}
正在发生的事情是,当您发送 (ioMessage) 时,有一个新事件以某种方式覆盖了 ioMessage,因此重复的消息被发送出去。
你有什么建议?