fix: send message after commit
This commit is contained in:
parent
724527f00d
commit
c1db1714ef
1 changed files with 44 additions and 12 deletions
|
|
@ -1,13 +1,47 @@
|
||||||
package ru.spcex.clearing.fix.quickfix;
|
package ru.spcex.clearing.fix.quickfix;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.ZoneOffset;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.DisposableBean;
|
import org.springframework.beans.factory.DisposableBean;
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import quickfix.*;
|
import quickfix.ConfigError;
|
||||||
import quickfix.field.*;
|
import quickfix.DecimalField;
|
||||||
|
import quickfix.DoNotSend;
|
||||||
|
import quickfix.FieldNotFound;
|
||||||
|
import quickfix.IncorrectDataFormat;
|
||||||
|
import quickfix.IncorrectTagValue;
|
||||||
|
import quickfix.LogFactory;
|
||||||
|
import quickfix.Message;
|
||||||
|
import quickfix.MessageFactory;
|
||||||
|
import quickfix.MessageStoreFactory;
|
||||||
|
import quickfix.RejectLogon;
|
||||||
|
import quickfix.Session;
|
||||||
|
import quickfix.SessionID;
|
||||||
|
import quickfix.SessionNotFound;
|
||||||
|
import quickfix.SessionSettings;
|
||||||
|
import quickfix.SocketInitiator;
|
||||||
|
import quickfix.StringField;
|
||||||
|
import quickfix.UnsupportedMessageType;
|
||||||
|
import quickfix.field.Account;
|
||||||
|
import quickfix.field.ClOrdID;
|
||||||
|
import quickfix.field.ContraBroker;
|
||||||
|
import quickfix.field.ExDestination;
|
||||||
|
import quickfix.field.HandlInst;
|
||||||
|
import quickfix.field.OrdStatus;
|
||||||
|
import quickfix.field.OrdType;
|
||||||
|
import quickfix.field.OrderQty;
|
||||||
|
import quickfix.field.Price;
|
||||||
|
import quickfix.field.SecurityID;
|
||||||
|
import quickfix.field.SecurityIDSource;
|
||||||
|
import quickfix.field.SettlType;
|
||||||
|
import quickfix.field.Side;
|
||||||
|
import quickfix.field.Text;
|
||||||
|
import quickfix.field.TransactTime;
|
||||||
import quickfix.fix44.ExecutionReport;
|
import quickfix.fix44.ExecutionReport;
|
||||||
import quickfix.fix44.MessageCracker;
|
import quickfix.fix44.MessageCracker;
|
||||||
import quickfix.fix44.NewOrderSingle;
|
import quickfix.fix44.NewOrderSingle;
|
||||||
|
|
@ -21,10 +55,6 @@ import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.time.ZoneOffset;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class Application extends MessageCracker implements quickfix.Application, InitializingBean, DisposableBean {
|
public class Application extends MessageCracker implements quickfix.Application, InitializingBean, DisposableBean {
|
||||||
private static final Logger log = LoggerFactory.getLogger(Application.class);
|
private static final Logger log = LoggerFactory.getLogger(Application.class);
|
||||||
|
|
@ -112,13 +142,13 @@ public class Application extends MessageCracker implements quickfix.Application,
|
||||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
transaction.beginTransaction();
|
transaction.beginTransaction();
|
||||||
try {
|
try {
|
||||||
|
Long orderNum = null;
|
||||||
if (executionReport.isSetField(ClOrdID.FIELD) && executionReport.isSetField(ExDestination.FIELD) && executionReport.isSetField(TransactTime.FIELD) && executionReport.isSetField(OrdStatus.FIELD)) {
|
if (executionReport.isSetField(ClOrdID.FIELD) && executionReport.isSetField(ExDestination.FIELD) && executionReport.isSetField(TransactTime.FIELD) && executionReport.isSetField(OrdStatus.FIELD)) {
|
||||||
ExDestination exDestination = (ExDestination) executionReport.getField(new ExDestination());
|
ExDestination exDestination = (ExDestination) executionReport.getField(new ExDestination());
|
||||||
TransactTime transactTime = executionReport.getTransactTime();
|
TransactTime transactTime = executionReport.getTransactTime();
|
||||||
OrdStatus ordStatus = executionReport.getOrdStatus();
|
OrdStatus ordStatus = executionReport.getOrdStatus();
|
||||||
ClOrdID clOrdID = executionReport.getClOrdID();
|
ClOrdID clOrdID = executionReport.getClOrdID();
|
||||||
|
|
||||||
Long orderNum = null;
|
|
||||||
try {
|
try {
|
||||||
orderNum = Long.parseLong(clOrdID.getValue());
|
orderNum = Long.parseLong(clOrdID.getValue());
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
|
|
@ -172,14 +202,16 @@ public class Application extends MessageCracker implements quickfix.Application,
|
||||||
sOrders.setUpdated(Instant.now());
|
sOrders.setUpdated(Instant.now());
|
||||||
sOrdersImdg.update(sOrders);
|
sOrdersImdg.update(sOrders);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
transaction.commitTransaction();
|
||||||
|
|
||||||
|
if (orderNum != null) {
|
||||||
//send message to df for update orderCurrency status
|
//send message to df for update orderCurrency status
|
||||||
OrderCurrencyStatusUpdateRequest updateRequest = new OrderCurrencyStatusUpdateRequest();
|
OrderCurrencyStatusUpdateRequest updateRequest = new OrderCurrencyStatusUpdateRequest();
|
||||||
updateRequest.addId(orderNum);
|
updateRequest.addId(orderNum);
|
||||||
kafkaSender.sendRequestToQueue(Consts.ORDER_CURRENCY_STATUS_UPDATE_FIX, updateRequest);
|
kafkaSender.sendRequestToQueue(Consts.ORDER_CURRENCY_STATUS_UPDATE_FIX, updateRequest);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
transaction.commitTransaction();
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error(executionReport.toString(), e);
|
log.error(executionReport.toString(), e);
|
||||||
transaction.rollbackTransaction();
|
transaction.rollbackTransaction();
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue