what status message is expected from publisher when the Instrument is currently not available.

Options
yathing.ullal
yathing.ullal Newcomer
edited June 19 in RFA

Hi All,

I would like to briefly explain the scenario:

We have a publisher that sends a Service Up message, but initially, no instruments are available. Instruments are created dynamically, so it's not possible to expect all of them to be available immediately.
In this case, what message is expected from the publisher to ensure the end user receives the data once it becomes available?

RSSL_STREAM_CLOSED or RSSL_STREAM_CLOSED_RECOVER

Second scenario:

Out of 10 requested instruments, only 5 are actually available. The remaining 5 have expired and will never be served by the publisher.
How should we handle timeouts or negative acknowledgments for these invalid instruments?

Many Thanks,

Tagged:

Answers

  • Hello @yathing.ullal

    The key difference between the CLOSED and CLOSED_RECOVER is the recovery of data. A CLOSED implies that the instrument does not exist and will never be available again. The application/SDK should not try to subscribe to this instrument again. This should be used in the second scenario that you describe - the expired instruments that will never be available again.

    A CLOSED RECOVER, implies that the instrument is not currently available. It might become available at some time in future and the app should try again at a later time.

  • yathing.ullal
    yathing.ullal Newcomer
    edited June 18

    Hi Gurpreet, Many Thanks for the suggestion, it's very clear now that I definitely have to use CLOSED_RECOVER, as the Instruments will be available anytime, but I am still unclear how should we handle wrong or expired Instruments, as we have set CLOSED_RECOVER it will wait.

  • For invalid or expired instruments, the publisher should send a Closed status message. See this example that infrastructure sends for an instrument that does not exist -

    StatusMsg
        streamId="5"
        domain="MarketPrice Domain"
        state="Closed / Suspect / Not found / '**The record could not be found'"
        name="INV.ALID"
        nameType="1"
        serviceId="257"
        serviceName="ELEKTRON_DD"
    StatusMsgEnd
    
    
  • Hi Gurpreet - Many thanks for the suggestion, there is one more condition i would like to get your suggestion on.

    After the service is up few of the Instruments are available but they are not actually available with any FIDS populated, currently its set as RSSL_STREAM_OPEN with RSSL_DATA_SUSPECT and once the fields are populated, we again send a refresh, is this the correct way to handle this, or would you like to suggest a better way of doing it.

    Thanks

    Yathin

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @yathing.ullal

    Yes, you could do that.

  • Many Thanks @Jirapongse , but is there any other way of handling this, just want to make sure the way we have it is the best way, if you have any other option pls let me know, would love to try that out.