question

Upvotes
Accepted
21 1 1 3

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

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.

elektronrefinitiv-realtimetreprfardms
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
Accepted
21 1 1 3

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!

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
7.6k 15 6 9

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.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
21 1 1 3

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));

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
32.2k 40 11 19

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?

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.