Hi @Pimchaya.Wongrukun,
The connection died again, I have the log by using:
<Consumer> <Name value="Consumer_1"/> ... <XmlTraceToStdout value="1"/> </Consumer>
Can you tell me your email, so that we can talk about this problem better.
Hi @Pimchaya.Wongrukun,
The connection died again, I have the log by using:
<Consumer> <Name value="Consumer_1"/> ... <XmlTraceToStdout value="1"/> </Consumer>
Can you tell me your email, so that we can talk about this problem better.
Hello @Raj.Huang
To be able to support you directly via email, please login to
https://customers.thomsonreuters.com/developer/crmcontactus/support.aspx
using your company's email then you can submit the problem to my team directly.
Next, a case will be created and we will respond to you directly via the case's email.
If you cannot access or submit the problem, please contact RDC admin(
rdc.administrator@thomsonreuters.com)
Note: Only registered users for TRDC contact can be submitted the problems to our web form. For details to register for our service,please contact RDC admin.
Hi @Pimchaya.Wongrukun, I can't open the link.. reply here then. I found after received below data, there is no quotation data received anymore.But normal message still comes.
<!-- Incoming Reactor message --> <!-- java.nio.channels.SocketChannel[connected local=/192.168.2.170:32613 remote=/122.144.182.146:14002] --> <!-- Tue Sep 19 14:42:39 CST 2017 --><STATUS domainType="MARKET_PRICE" streamId="5" containerType="NO_DATA" flags="0x08 (HAS_MSG_KEY)" dataSize="0"> <key flags="0x07 (HAS_SERVICE_ID|HAS_NAME|HAS_NAME_TYPE)" serviceId="257" name="GBP=" nameType="1"/> <dataBody> </dataBody>
</STATUS>
Can I have all results from the console output via a file attachment?
Normally, Market Price Status Message conveys state change information associated with an item stream, not the connection status.
In fact, if a connection problem does occur, EMA should rather logs the similar result below (e.g. ChannelDown) to console.
See ema-channel-down-message-log.txt for more message details.
Hi @Nipat Kunvutipongsak, I have replied below, can you help me to take a look at it?
Hi @Nipat Kunvutipongsak, I have uploaded the part of log, because it's too big. So I cut out some important logs for you.logdetail-question.zip
Hello @Raj.Huang,
I've checked the log file, and I can assure you that the connection's down on 15:44:41.772 (see below).
Received ChannelDownReconnecting event on channel Channel
This was generated from Reactor (underlying layer to indicate that this channel down event can be recoverable).
The connection was actually recovered on 15:44:42.789 as conveyed by the following text message:
Received ChannelUp event on channel Channel
Anyway, a streamId and item name conflict to each other. Considering the STATUS message type, we suspected that it should be a multi-threaded application, am I correct?
Hi @Nipat Kunvutipongsak,
Of course it is a multi-threaded application, as you said, the connection's down on 15:44:41.772. However, my application can't decode data from the message since 14:42, after receiving
Incoming Reactor message containerType="NO_DATA",
Though it still received normal data:
containerType="FIELD_LIST"
And at 15:44:42.789, it did recovered, my application could decode data again. I mean the time interval is too long reaching 1 hour, I would like a better solution for this connection.
And can you tell me why the reuter server send the message:
<STATUS domainType="MARKET_PRICE" streamId="5" containerType="NO_DATA" flags="0x08 (HAS_MSG_KEY)" dataSize="0"> <key flags="0x07 (HAS_SERVICE_ID|HAS_NAME|HAS_NAME_TYPE)" serviceId="257" name="GBP=" nameType="1"/> <dataBody> </dataBody> </STATUS>
or in which case the reuter server will send the message?
Hello @Raj.Huang,
To clarify this again,
<!-- Incoming Reactor message -->
Still, it's quite suspicious because why EMA didn't any further receive data after 14:42:40, then the connection was cut on 15:44:41.772.
For my suggestion, I suggest you try to replicate this problem using a simple EMA example such as example 100 MarketPriceStreaming (see the attachment).
P.S. You may need to change the host, port, service feed value according to your environment.
consumer = EmaFactory.createOmmConsumer(config.host("host:port").username("user")); ReqMsg reqMsg = EmaFactory.createReqMsg(); consumer.registerClient(reqMsg.serviceName("service").name("JPY="), appClient); reqMsg.clear();<br>
Also, I've set the example runtime to 2 days
Thread.sleep(/*1 minute*/60000 * 60 * 24 * 2 /* -> total 2 days */); // API calls onRefreshMsg(), onUpdateMsg() and onStatusMsg()<br>
Hi @Nipat Kunvutipongsak,
I do use series100.example to test it, except that I add some logs. You can test it by yourself with @Nipat Kunvutipongsak, he told me how to send NO_DATA message.
@Raj.Huang, it's me who provided you how to send NO_DATA message in the other thread.
<!-- Incoming Reactor message --> <!-- java.nio.channels.SocketChannel[connected local=/127.0.0.1:62453 remote=localhost/127.0.0.1:14002] --> <!-- Wed Oct 11 16:22:25 ICT 2017 --> <!-- rwfMajorVer="14" rwfMinorVer="1" --> <STATUS domainType="MARKET_PRICE" streamId="3" containerType="NO_DATA" flags="0x00" dataSize="0"> <dataBody> </dataBody> </STATUS> <!-- Incoming Reactor message --> <!-- java.nio.channels.SocketChannel[connected local=/127.0.0.1:62453 remote=localhost/127.0.0.1:14002] --> <!-- Wed Oct 11 16:22:26 ICT 2017 --> <!-- rwfMajorVer="14" rwfMinorVer="1" --> <UPDATE domainType="MARKET_PRICE" streamId="3" containerType="FIELD_LIST" flags="0x00" updateType="0" dataSize="14"> <dataBody> <fieldList flags="0x08 (HAS_STANDARD_DATA)"> <fieldEntry fieldId="22" data="0C0F A2"/> <fieldEntry fieldId="30" data="0E15"/> </fieldList> </dataBody> </UPDATE> <!-- Incoming Reactor message --> <!-- java.nio.channels.SocketChannel[connected local=/127.0.0.1:62453 remote=localhost/127.0.0.1:14002] --> <!-- Wed Oct 11 16:22:27 ICT 2017 --> <!-- rwfMajorVer="14" rwfMinorVer="1" --> <UPDATE domainType="MARKET_PRICE" streamId="3" containerType="FIELD_LIST" flags="0x00" updateType="0" dataSize="14"> <dataBody> <fieldList flags="0x08 (HAS_STANDARD_DATA)"> <fieldEntry fieldId="22" data="0C0F A3"/> <fieldEntry fieldId="30" data="0E16"/> </fieldList> </dataBody> </UPDATE>
As you can see, the first message in the snippet is NO_DATA, and the com.thomsonreuters.ema.examples.training.consumer.series100.example100__MarketPrice__Streaming consumer application can continue receiving further updates. Please check the log file here: emaj-continues-get-data-regardless-no-data-message.txt
Hi @Nipat Kunvutipongsak,
As I said before, it do receive incoming messages as your capture shown, but the onUpdateMsg() method at Consumer.java won't be called, so we can't decode data then. You can print a log after the method being called like below, so that you can check if the method being called or not.
@Raj.Huang I got your point; onUpdateMsg() isn't called after the status message.
I'll cross check this behavior with the other APIs and will get back to you.
Hi @Nipat Kunvutipongsak,
Yes, you need to find out why onUpdateMsg() isn't called after the NO_DATA status message and why the reuters server send this message.
I've submitted a new issue to the development team on your behalf already (https://github.com/thomsonreuters/Elektron-SDK/issues/37).
So, you can communicate and follow up with the development team directly.
In the future, if you suspect there is an EMA bug/non-support feature or improper implementation/configuration in application level via GitHub at https://github.com/thomsonreuters/Elektron-SDK/issues, click "New issue" button, and put detailed information, then submit it to the Developer team.
@Nipat Kunvutipongsak,
Thank you, so this problem is a bug of EMAJ? And I still want to know why the Reuters server send the NO_DATA STATUS message out.
@Raj.Huang Regarding the STATUS message, actually it is used to convey state change information, so this message normally doesn't have a payload data (NO_DATA).
Refer to <Elektron-Package>\Ema\Docs\EMAJ_RDMUsageGuide.pdf
The problem should be why the server sent STATUS without any STATE information, which had no meaning for the subscription stream. So, this case should be investigated by the server team.
You can submit a ticket to them via https://my.thomsonreuters.com/ContactUsNew, and select Product as 'Elektron Edge' which is the server that the applciation is conecting to.
Hi @Raj.Huang
Based on the GitHub issue page, this issue has been fixed in Elektron SDK 1.1.2 G1 version.