call OmmCosumer.registerClient second time, handle does not change in feeder service

Jianping
Jianping Newcomer
edited June 13 in EMA

let me describe the issue in steps with pseudo code:

  1. in Consumer App, call

OmmConsumer.registerClient(reqMsgA, testConsumerClient, closure); // ric A

OmmConsumer.registerClient(reqMsgB, testConsumerClient, closure); // ric B

2. in Data feed service, OmmProviderClient.onReqMsg receives 1st OmmProviderEvent.handle, say 2, which is specific to the ric A.

2a. in onReqMsg, reply with RefreshMsg

3. in Data feed service, OmmProviderClient.onReqMsg receives 2nd OmmProviderEvent.handle, the handle has not changed, it is still 2

Issue:

In step 3, the handle should NOT be 2, but other number, which is specific to different Ric B

If I add a Thread.sleep(100) in Step 1 between the two registerClient, so that RefreshMsg of ric A can be received by the consumer, then the handle is set to 3 other than 2.

I hope the explanation is clear.

Thanks

Jianping

Answers

  • Hello @Jianping

    I tried replicating this scenario using EMA iProvider and Consumer examples, but received a unique handle for the requests.

    Can you please post the code, or try to show this behavior using the examples from the SDK. Thanks.

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @Jianping

    Please also provide the following information.

    1. Are you using snapshot requests?
    2. Is it a direct connection or are you using RTDS (ADH or ADS)?
    3. Please share the xml trace file of the provider application. You can enable the tracing by using the XmlTraceToFile configuration. For example:
        <DefaultIProvider value="Provider_1"/>
        <IProviderList>
    		<IProvider>		
    			<Name value="Provider_1"/>
    		
    			<Server value="Server_1"/>
    			
    			<Directory value="Directory_2"/>
    			<ItemCountHint value="10000"/>
    			<ServiceCountHint value="10000" />
    			<DispatchTimeoutApiThread value="500" />
    			<MaxDispatchCountApiThread value="500" />
    			<MaxDispatchCountUserThread value="500" />
    			<RefreshFirstRequired value="1" />
    			<XmlTraceToFile value="1"/>
    		</IProvider>

  • Jianping
    Jianping Newcomer

    Hi @Gurpreet,

    Which examples in SDK have you tried ? I want to see it myself.

    Thanks

    Jianping

  • Jianping
    Jianping Newcomer

    Hi @Jiraponse,

    1 . Yes, I am using snapshot requests   
     for (String value : TestRic.symbols.values()) {      ReqMsg reqMsg = EmaFactory.createReqMsg();      
    reqMsg.serviceName("xxxxxx") .serviceName("xxxxxx_xxxxx_xx") .domainType(EmaRdm.MMT_MARKET_PRICE) .interestAfterRefresh(true) .name(value);      
    consumer.registerClient(reqMsg, testConsumerClient, consumer);     
    //      Thread.sleep(100);    }
    
    2. It happens to both direct connection and RTDS
    3. I am trying XmlTraceToStandout to figure what is going on
    
  • I used both 100 MarketPrice Streaming and 102 Snapshot for the iProvider, and a 100 series MP Consumer examples - all modified to print the event handles.

    The handles were unique in both Streaming and Snapshot requests.