RefinitivConsumer改由单例模式获取
This commit is contained in:
@@ -51,20 +51,35 @@ public class RefinitivConsumer implements ApplicationRunner {
|
||||
@Resource
|
||||
private RedisTemplate redisTemplate;
|
||||
|
||||
private static String serviceName;
|
||||
@Value("${refinitiv.market-data.service-name}")
|
||||
private String serviceName;
|
||||
public void setServiceName(String serviceName) {
|
||||
RefinitivConsumer.serviceName = serviceName;
|
||||
}
|
||||
|
||||
private static String username;
|
||||
@Value("${refinitiv.market-data.username}")
|
||||
private String username;
|
||||
public void setUsername(String username) {
|
||||
RefinitivConsumer.username = username;
|
||||
}
|
||||
|
||||
private static String password;
|
||||
@Value("${refinitiv.market-data.password}")
|
||||
private String password;
|
||||
public void setPassword(String password) {
|
||||
RefinitivConsumer.password = password;
|
||||
}
|
||||
|
||||
private static String clientId;
|
||||
@Value("${refinitiv.market-data.clientId}")
|
||||
private String clientId;
|
||||
public void setClientId(String clientId) {
|
||||
RefinitivConsumer.clientId = clientId;
|
||||
}
|
||||
|
||||
private static long timeout;
|
||||
@Value("${refinitiv.market-data.batch-request-timeout}")
|
||||
private long timeout;
|
||||
public void setTimeout(long timeout) {
|
||||
RefinitivConsumer.timeout = timeout;
|
||||
}
|
||||
|
||||
|
||||
@Value("${refinitiv.token.username}")
|
||||
@@ -79,7 +94,7 @@ public class RefinitivConsumer implements ApplicationRunner {
|
||||
private String tokenUrl;
|
||||
|
||||
|
||||
private OmmConsumer consumer = null;
|
||||
private static OmmConsumer consumer = null;
|
||||
|
||||
public static final String TOP_ACTIVES_SYMBOL = ".AV.BO";
|
||||
public static final String TOP_GAINERS_SYMBOL = ".PG.BO";
|
||||
@@ -89,6 +104,34 @@ public class RefinitivConsumer implements ApplicationRunner {
|
||||
public static final String GRANT_TYPE = "password";
|
||||
|
||||
|
||||
@Override
|
||||
public void run(ApplicationArguments args) throws Exception {
|
||||
log.info("Initialize the consumer and connect to market data system....");
|
||||
initialize();
|
||||
}
|
||||
|
||||
private static void initialize() {
|
||||
log.info("Initialize the consumer and connect to market data system....start");
|
||||
OmmConsumerConfig config = EmaFactory.createOmmConsumerConfig();
|
||||
config.username(username)
|
||||
.password(password)
|
||||
.clientId(clientId)
|
||||
.consumerName("Consumer_4");
|
||||
consumer = EmaFactory.createOmmConsumer(config);
|
||||
log.info("Initialize the consumer and connect to market data system....end");
|
||||
}
|
||||
public static OmmConsumer getConsumer() {
|
||||
if (consumer == null) {
|
||||
synchronized (RefinitivConsumer.class) {
|
||||
if (consumer == null) {
|
||||
initialize();
|
||||
}
|
||||
}
|
||||
}
|
||||
return consumer;
|
||||
}
|
||||
|
||||
|
||||
public InstrumentData[] getDataBySymbol(String symbol) throws Exception {
|
||||
String[] items = symbol.split(",");
|
||||
log.info("Quote request for: {}", java.util.Arrays.toString(items));
|
||||
@@ -214,6 +257,9 @@ public class RefinitivConsumer implements ApplicationRunner {
|
||||
}
|
||||
|
||||
List<String> topSymbols = RefinitivUtil.decodeTopData(result[0]);
|
||||
if (CollUtil.isEmpty(topSymbols)) {
|
||||
return list;
|
||||
}
|
||||
return getStockList(String.join(",", topSymbols));
|
||||
}
|
||||
|
||||
@@ -229,16 +275,6 @@ public class RefinitivConsumer implements ApplicationRunner {
|
||||
StrUtil.containsAny(dataState, "Suspect", "NotFound", "**The record could not be found", "CLOSED");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(ApplicationArguments args) throws Exception {
|
||||
log.info("Initialize the consumer and connect to market data system....");
|
||||
OmmConsumerConfig config = EmaFactory.createOmmConsumerConfig();
|
||||
config.username(username);
|
||||
config.password(password);
|
||||
config.clientId(clientId);
|
||||
consumer = EmaFactory.createOmmConsumer(config.consumerName("Consumer_4"));
|
||||
}
|
||||
|
||||
public void synchronousRequest(Batch bRequest) throws Exception {
|
||||
ElementList eList = EmaFactory.createElementList();
|
||||
OmmArray array = EmaFactory.createOmmArray();
|
||||
@@ -246,7 +282,12 @@ public class RefinitivConsumer implements ApplicationRunner {
|
||||
array.add(EmaFactory.createOmmArrayEntry().ascii(instr));
|
||||
}
|
||||
eList.add(EmaFactory.createElementEntry().array(EmaRdm.ENAME_BATCH_ITEM_LIST, array));
|
||||
consumer.registerClient(EmaFactory.createReqMsg().serviceName(serviceName).payload(eList).interestAfterRefresh(false), new RefinitivAppClient(), bRequest);
|
||||
try {
|
||||
getConsumer().registerClient(EmaFactory.createReqMsg().serviceName(serviceName).payload(eList).interestAfterRefresh(false), new RefinitivAppClient(), bRequest);
|
||||
} catch (NullPointerException e) {
|
||||
initialize();
|
||||
getConsumer().registerClient(EmaFactory.createReqMsg().serviceName(serviceName).payload(eList).interestAfterRefresh(false), new RefinitivAppClient(), bRequest);
|
||||
}
|
||||
|
||||
// wait for batch to be fulfilled
|
||||
bRequest.await();
|
||||
|
||||
Reference in New Issue
Block a user