how can i get the response data without call registerClient when I subscribe same ric second time?

how can i get the response data without call registerClient when I subscribe same ric second time?

Best Answer

  • @denny.w.h.zhong

    EMA doesn't cache the data. To get the response, you can reissue a request with a handle.

    consumer.reissue(ReqMsg().initialImage(true), handle);

    With this reissue, the application gets a new refresh via the application callback method.

Answers

  • Would you like to get update messages(containing only changed fields’ value) after a refresh message(the first data response with all fields you specified in view) like below?

    RefreshMsg

    streamId="5"

    domain="MarketPrice Domain"

    solicited

    RefreshComplete

    state="Open / Ok / None / 'All is well'"

    itemGroup="00 01"

    permissionData="03 08 42 52 6c"

    name="JPY="

    nameType="1"

    serviceId="2114"

    serviceName="API_ELEKTRON_EDGE_TOKYO"

    Payload dataType="FieldList"

    FieldList FieldListNum="99" DictionaryId="1"

    FieldEntry fid="22" name="BID" dataType="Real" value="114.50"

    FieldEntry fid="25" name="ASK" dataType="Real" value="114.52"

    FieldListEnd

    PayloadEnd

    RefreshMsgEnd

    UpdateMsg

    streamId="5"

    domain="MarketPrice Domain"

    updateTypeNum="0"

    name="JPY="

    serviceId="2114"

    serviceName="API_ELEKTRON_EDGE_TOKYO"

    Payload dataType="FieldList"

    FieldList

    FieldEntry fid="22" name="BID" dataType="Real" value="114.51"

    FieldListEnd

    PayloadEnd

    UpdateMsgEnd

    1. If yes, before you re-subscribe the RIC, you need to unsubscribe the RIC first e.g. consumer.unregister(RIC2Handle.get("TEST1")); as I explained in the email below(sent on 22 Nov). This is to close the RIC item stream to stop receiving data sent to this item stream. When you re-subscribe the RIC(a new item stream opens), you will get data from the new item stream only.

    1. If no. You should use snapshot request. After EMA sends a snapshot request, it receives a refresh message. Then, EMA closes this item stream immediately automatically. Hence, the application will not receive any data(update messages) of this RIC. You can re-subscribe this RIC after getting a refresh message without unsubscribing the RIC before(EMA has done this automatically). To request snapshot data, set interestAfterRefresh to false like an example snipped source code below:

    consumer.registerClient(reqMsg.serviceName(serviceName).name("TEST1").interestAfterRefresh(false), appClient);

    Note: If you set interestAfterRefresh to true, you will get update messages after a refresh messages till you unsubscribe the RIC.