public void onMessage(OrderCancelRequest message, SessionID sessionID) throws FieldNotFound, UnsupportedMessageType, IncorrectTagValue { String symbol = message.getString(Symbol.FIELD); char side = message.getChar(Side.FIELD); String id = message.getString(OrigClOrdID.FIELD); Order order = orderMatcher.find(symbol, side, id); if (order != null) { order.cancel(); cancelOrder(order); orderMatcher.erase(order); } else { OrderCancelReject fixOrderReject = new OrderCancelReject(new OrderID("NONE"), new ClOrdID(message.getString(ClOrdID.FIELD)), new OrigClOrdID(message.getString(OrigClOrdID.FIELD)), new OrdStatus(OrdStatus.REJECTED), new CxlRejResponseTo(CxlRejResponseTo.ORDER_CANCEL_REQUEST)); String senderCompId = message.getHeader().getString(SenderCompID.FIELD); String targetCompId = message.getHeader().getString(TargetCompID.FIELD); fixOrderReject.getHeader().setString(SenderCompID.FIELD, targetCompId); fixOrderReject.getHeader().setString(TargetCompID.FIELD, senderCompId); try { Session.sendToTarget(fixOrderReject, targetCompId, senderCompId); } catch (SessionNotFound e) { } } }