question

Upvotes
Accepted
87 7 11 26

[EMA C++] Receive some chain code repeatly

refreshmsg-repeat.txthello:

I develop with EMA C++;

The service I connect to is "EZD";

My log is shown as the appendix.

I request chain of HKSE, but I received some chain code more than once between 9:00 and 9:30, why?

For Example in the log;

1、I request “0#/MBD.HK” at 12-28 09:26:32;

2、I received “10#/MBD.HK” at 12-28 09:26: as shown at line 523

3、I get all the MBD.HK at 12-28 09:26:53,which is shown at line 3455 in the log;

4、I request chain "0#NYSECONS.K" at 12-28 09:27:19 as showm at line 3600refreshmsg-repeat.txt

5、but I received 10#/MBD.HK at 12-28 09:27:23 again as shown at line 4791

elektronrefinitiv-realtimeelektron-sdkema-apirrtelektron-message-apichain-ric
icon clock
10 |1500

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

Upvotes
Accepted
11.3k 25 9 14

@luxiangyuan

1. In this case, "unsolicited refresh" was sent for data resynchronization. It did not reflect market activities.

2. If there is any change with Chain RICs, you normally receive updates in updateMsg. However, if error is detected on stream, you should receive unsolicited refreshMsg which contains latest data for all fields.

3. If you specify interestAfterRefresh (false), you will get only one snapshot refresh and not get any updates with Chain RICS.

If your application needs to handle updates with Chain RICS, your application needs to specify interestAfterRefresh (true). To handle the unsolicited refresh message, application should verify whether refreshMsg is solicited or unsolicited via Refresh::getSolicited() function. If refreshMsg is unsolicited, application just updates all constituent RICs in LONGLINK1 - LONGLINK14 fields. If there is no change on LONGNEXTLR field, application skips requesting next Chain RIC.

icon clock
10 |1500

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

Upvotes
11.3k 25 9 14

@luxiangyuan

From the log file, the application received an unsolicited Refresh message for 8#/MBD.HK at line: 4639, so that the application processed the message, and then request next Chain RICs and so on. The unsolicited refresh is a refresh pushed out by upstream provider, if some kind of information change occurs (e.g., an error detected on a stream). It is not provided as a response to a request.

If your application doesn't aim to handle any changes (e.g. update, unsolicited refresh) on Chain RICs, your application can send snapshot requests for only Chain RICs by specifying interestAfterRefresh( false ).

icon clock
10 |1500

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

hello .rungruengrayubkul:

thank you very much, I read your answer, but I have some questions.

1、 "unsolicited refresh" I received is lawful?

2、when there is update with Chain RICS, what I receive is RefreshMsg, not the updateMSg?

3、if I specifying interestAfterRefresh( false ), What should I do if there is update with Chain RICS?

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

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