question

Upvotes
58 5 10 9

The connection between my application and the Reuters Centers died again, I can't receive quotaion now. And the application can't reconnect itself.

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.

elektronrefinitiv-realtimeelektron-sdkrrtema-apielektron-message-api
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

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.

Upvotes
58 5 10 9

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>

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

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?

Upvotes
58 5 10 9

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


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

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,

  • EMA can recover connection around 1 minutes (15:44:41.772 to 15:44:42.789).
  • After EMA received the status event for AUD=, it did receive one update after this status. You can observe incoming data via an xml comment tag
<!-- 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).

consumer.txt (2.9 KiB)

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>
Show more comments
Upvotes
58 5 10 9

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.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Upvotes
1.9k 6 9 16

@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

  • What's the version of EMA Java used (displayed in the log from both of Consumer and IProvider example -- you can check yours similar to the screenshot below)?
  • Can I have the log files from both of series100.example (Consumer and IProvider)?


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

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.

Upvotes
1.9k 6 9 16
@Raj.Huang

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.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

@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.

Upvote
11.5k 16 7 10

Hi @Raj.Huang

Based on the GitHub issue page, this issue has been fixed in Elektron SDK 1.1.2 G1 version.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Click below to post an Idea Post Idea