Problem with retrieving live feed in RFA .NET API 8.0.1 with the new RDMS servers (RDMS servers migr

Hi,

Has someone problems with retrieving live feed ( for BID and ASK fields) when using the new RDMS servers in RFAConnection.cfg?

I'm using RFA .NET 8.0.1 version of API and the new RDMS servers and live feed is not loading with BID and ASK values for different items.

Best Answer

  • Hi,

    I found as solution making the request with BID and ASK IDs, not with their names. When I use their ID's, instead of their names, it works.

    Thank you for all suggestions!

Answers

  • Can you test the RMDS server with StarterConsumer example from RFA.NET packages?
    It will print all fields to console including status message in case that it has an error. There is console output in StarterConsumer_<pid>.log which may help investigate the issue.

  • Hi, I used StarterConsumer and it's working from here. In my way of consuming RFA .NET 8, I make the request just for BID and ASK fields (I encode the ViewData which is comprised of BID and ASK fields IDs) and when I want to extract values from response, the FieldList is empty).

    In log file appear just "

    2018-05-21 10:10:08,999 DEBUG - Received MMT_MARKET_PRICE event: 743751845184 ItemName:EURUAH= Handle:743751845184 Streamstate:Open DataState:Ok Status:All is well".

    I call extracting values in the following condition:

    (respMsg.HintMask & RespMsg.HintMaskFlag.Payload) != 0 .

    private void RequestItem(string servicename, string itemname)

    {

    // Create a request message for MarketPrice data request.

    ReqMsg reqMsg = newReqMsg();

    reqMsg.MsgModelType = RDM.MESSAGE_MODEL_TYPES.MMT_MARKET_PRICE;

    reqMsg.InteractionType = ReqMsg.InteractionTypeFlag.InitialImage | ReqMsg.InteractionTypeFlag.InterestAfterRefresh;

    reqMsg.AttribInfo = newAttribInfo() { ServiceName = newRFA_String(servicename), Name = newRFA_String(itemname), NameType = RDM.INSTRUMENT_NAME_TYPES.INSTRUMENT_NAME_RIC };

    //This section sets a view for a single item

    //A view is defined as specification of a subset of Field(Entry)s or Element(Entry)s of a particular open item.

    //The response message contains only those fields or entries defined by the View in item requests.

    //A View is defined by the user by setting the ViewType and corresponding ViewData element

    //entries in an element list in the payload of request message

    ElementList elementList = newElementList();

    if (fields.Count > 0)

    {

    reqMsg.IndicationMask = (byte)(reqMsg.IndicationMask | ReqMsg.IndicationMaskFlag.View);

    ElementEntry element = newElementEntry();

    element.Name = RDM.REQUEST_MSG_PAYLOAD_ELEMENT_NAME.ENAME_VIEW_TYPE;

    DataBuffer dataBuffer = newDataBuffer();

    dataBuffer.SetUInt(RDM.VIEW_TYPES.VT_FIELD_ID_LIST, DataBuffer.DataBufferEnum.UInt);

    element.Data = dataBuffer;

    ElementListWriteIterator elwriter = newElementListWriteIterator();

    elwriter.Start(elementList);

    elwriter.Bind(element);

    ArrayWriteIterator arrWIt = newArrayWriteIterator();

    ThomsonReuters.RFA.Data.Array elementData = new ThomsonReuters.RFA.Data.Array();

    ArrayEntry arrayEntry = newArrayEntry();

    element.Clear();

    arrWIt.Start(elementData);

    //Encode the ViewData which is comprised of field IDs specified by the user in the viewFieldIdList parameter

    foreach (var field in fields)

    {

    dataBuffer.Clear();

    arrayEntry.Clear();

    dataBuffer.SetFromString(field, DataBuffer.DataBufferEnum.Int);

    arrayEntry.Data = dataBuffer;

    arrWIt.Bind(arrayEntry);

    }

    arrWIt.Complete();

    element.Name = RDM.REQUEST_MSG_PAYLOAD_ELEMENT_NAME.ENAME_VIEW_DATA;

    element.Data = elementData;

    elwriter.Bind(element);

    elwriter.Complete();

    reqMsg.Payload = elementList;

    }

    // We send an RDM data request by registering an event client using

    // an OMM item interest spec which holds the request message.

    OMMItemIntSpec ommItemIntSpec = newOMMItemIntSpec() { Msg = reqMsg };

    // We don't need to hold on to the handle returned by RegisterClient because

    // on disposal we use the login handle to close all data streams.

    long handle = consumer.RegisterClient(eventQueue, ommItemIntSpec, this);

    if (handle == 0)

    thrownewApplicationException("Failed to register client for RDM data events.");

    }

    fields = newList<RFA_String>();


    fields.Add(newRFA_String(Globals.Bid));

    fields.Add(newRFA_String(Globals.Ask));

  • Hello @Ileana.Simona.Scarlat,

    My unedrstanding is that you are receiving the updates, however, BID and ASK fields are missing from all or some of the updates.

    Suggesting that you test the same subscription with the full fid list, not "view", and examine the update stream, see if you see BID and ASK, some of the reasons for them not to be there are:

    • BID and ASK appear only in some of the updates
    • For some markets, this information will be carried in different fids, for example PRIM_ACT_1
    • Only during market open
    • Only if the instrument in question is actively trading

    RFA.NET SDK has the Consumer example that can be quick-tested with.

    Please examine the complete stream, not a view, and let us know if this gives you ideas/helps?