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