How to fetch multiple Symbols data by making one call for EMA?(Ex : Sym1,Sym2,Sym3....)is it corr...

How to fetch multiple Symbols data by making one call for EMA?(Ex : Sym1,Sym2,Sym3....)is it correct way: consumer.registerClient(reqMsg.serviceName("ABC").name("Sym1,Sym2,Sym3"), appClient);?

Best Answer

  • Hello @priyanka.mundargi

    An EMA consumer application can request multiple items using a single request called a batch
    request. After the consumer sends an batch request to the
    ADS, the ADS responds by sending the items as if they were opened individually
    so the items can be managed individually as shown in the figure below:

    image

    Hence, your EMA application just once calls OmmConsumer.registerClient(..) specifying array of multiple Symbols.

    A snipped
    source code in EMA Java:

    ElementList batch = EmaFactory.createElementList();
    OmmArray array = EmaFactory.createOmmArray();


    array.add(EmaFactory.createOmmArrayEntry().ascii("TRI.N"));
    array.add(EmaFactory.createOmmArrayEntry().ascii("IBM.N"));

    batch.add(EmaFactory.createElementEntry().array(EmaRdm.ENAME_BATCH_ITEM_LIST,
    array));
    consumer.registerClient(EmaFactory.createReqMsg().serviceName("DIRECT_FEED").payload(batch),
    appClient);

    For the complete application source code shipped with Elektron Java SDK package, it is <Elektron Java SDK
    package>\Ema\Src\examples\java\com\thomsonreuters\ema\examples\training\consumer\series300\example370__MarketPrice__Batch.

    A snipped
    source code in EMA C++:

    UInt64 handle = consumer.registerClient( ReqMsg().serviceName( "DIRECT_FEED" ).payload( ElementList().addArray( ENAME_BATCH_ITEM_LIST, OmmArray().addAscii( "TRI.N" ).addAscii( "IBM.N" ).complete() ).complete() ), client );

    For the complete application source code shipped with Elektron C++ SDK package, it is

    <Elektron C++ SDK
    package>\Ema\Examples\Training\Consumer\300_Series_Examples\370__MarketPrice__Batch

Answers