The connection between my application and the Reuters Centers died again, I can't receive quotaion n

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.

Answers

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

    image

    See ema-channel-down-message-log.txt for more message details.

  • 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

  • Hi @Nipat Kunvutipongsak, I have replied below, can you help me to take a look at it?

  • 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).

  • 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,

    Thank you very much for answering my question.

    I suspect the EMAConsumer may die or exit when it receives the NO_DATA message. So I want to know why(or when) the reuter server send the message:containerType="NO_DATA"? I have asked above.

    <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>
  • Hi @Nipat Kunvutipongsak,

    Could you spend your time in helping me about the problem? Thanks if getting your reply.

  • Hello @Raj.Huang ,

    According to this thread; https://community.developers.refinitiv.com/questions/18912/can-i-simulate-the-reuters-to-send-item-messages-t.html,

    Does this problem still persist with the local provider with the NO_DATA STATUS message?

  • Hi @Nipat Kunvutipongsak,

    Yes, it still persist. Once I send the NO_DATA STATUS message, I can't receive update message anymore. Though incoming messages still received.


  • Hello @Raj.Huang ,

    Just want to confirm whether plain examples in EMA Java (see below) also encounter this problem or not.

    • com.thomsonreuters.ema.examples.training.consumer.series100.example100__MarketPrice__Streaming
    • com.thomsonreuters.ema.examples.training.consumer.series100.example120__MarketPrice__FieldListWalk

    Have you have a chance to test the same scenario with these examples yet?

  • 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

    • 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)?

    image

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

    image

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

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

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

    image

    image

    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.