Hi, I'm trying to use the provided SDK for RTO websockets consumer, but I'm unable to connect.
This does work when I'm using another service without the SDK, so credentials do work.
This is the code I'm trying to use real-time-streaming-consumer-example.
Here is the implementation:
@Service
public class WebSocketsManager {
private WebsocketMessageConsumer websocketMessageConsumer; // this implements OmmConsumerClient.
@PostConstruct
public void connect() {
OmmConsumerConfig config = EmaFactory.createOmmConsumerConfig();
Map configDb = EmaFactory.createMap();
serviceDiscovery = EmaFactory.createServiceEndpointDiscovery(null, "https://api.refinitiv.com/auth/oauth2/v2/token", "https://api.refinitiv.com/streaming/pricing/v1/")
connect(configDb)
consumer = EmaFactory.createOmmConsumer(config.clientId("user").clientSecret("secret..").config(configDb)
consumer.registerClient(EmaFactory.createReqMsg().serviceName("ELEKTRON_DD").name("IBM.N"), appClient);
}
public void connect(Map configDb) {
OmmConsumer consumer = null;
try {
Map elementMap = EmaFactory.createMap();
ElementList elementList = EmaFactory.createElementList();
ElementList innerElementList = EmaFactory.createElementList();
innerElementList.add(EmaFactory.createElementEntry().ascii("Channel", "Channel_1"));
// Use FileDictionary instead of ChannelDictionary as WebSocket connection has issue to download dictionary from Refinitiv Data Platform
innerElementList.add(EmaFactory.createElementEntry().ascii("Dictionary", "Dictionary_1"));
elementMap.add(EmaFactory.createMapEntry().keyAscii("Consumer_1", MapEntry.MapAction.ADD, innerElementList));
innerElementList.clear();
elementList.add(EmaFactory.createElementEntry().map("ConsumerList", elementMap));
elementMap.clear();
configDb.add(EmaFactory.createMapEntry().keyAscii("ConsumerGroup", MapEntry.MapAction.ADD, elementList));
elementList.clear();
innerElementList.add(EmaFactory.createElementEntry().ascii("ChannelType", "ChannelType::RSSL_ENCRYPTED"));
innerElementList.add(EmaFactory.createElementEntry().ascii("EncryptedProtocolType", "EncryptedProtocolType::RSSL_WEBSOCKET"));
innerElementList.add(EmaFactory.createElementEntry().ascii("WsProtocols", "tr_json2"));
innerElementList.add(EmaFactory.createElementEntry().ascii("Host", "https://api.refinitiv.com/auth/oauth2/v2/token"));
// innerElementList.add(EmaFactory.createElementEntry().ascii("Port", ""));
innerElementList.add(EmaFactory.createElementEntry().intValue("EnableSessionManagement", 1));
elementMap.add(EmaFactory.createMapEntry().keyAscii("Channel_1", MapEntry.MapAction.ADD, innerElementList));
innerElementList.clear();
elementList.add(EmaFactory.createElementEntry().map("ChannelList", elementMap));
elementMap.clear();
configDb.add(EmaFactory.createMapEntry().keyAscii("ChannelGroup", MapEntry.MapAction.ADD, elementList));
elementList.clear();
elementMap.add(EmaFactory.createMapEntry().keyAscii("Dictionary_1", MapEntry.MapAction.ADD, innerElementList));
innerElementList.clear();
elementList.add(EmaFactory.createElementEntry().map("DictionaryList", elementMap));
elementMap.clear();
configDb.add(EmaFactory.createMapEntry().keyAscii("DictionaryGroup", MapEntry.MapAction.ADD, elementList));
elementList.clear();
} catch (OmmException e) {
log.error(e.getMessage());
} finally {
if (consumer != null) consumer.uninitialize();
}
And this is the error I get:
ClientName: ChannelCallbackClient
Severity: Warning
Text: Received ChannelDownReconnecting event on channel Channel
RsslReactor @564d9ec2
RsslChannel @ac3739d
Error Id 0
Internal sysError 0
Error Location Reactor.processWorkerEvent
Error text Error initializing channel: errorId=-1 text=Connection refused
What am I doing wrong / missing?
Thanks