PostMsg has not have container type of RSSL_DT_MSG Error when contributing using RFA to a TREP TR...

...CC service


Using RFA Java.

Here is an except from the code;

----

ConsumerEncoder requestEncoder = new ConsumerEncoder();

OMMEncoder _postOMMEncoder = requestEncoder.pool.acquireEncoder();
OMMMsg _postOMMMsg = requestEncoder.pool.acquireMsg();

----

_postOMMMsg.setMsgModelType(RDMMsgTypes.MARKET_PRICE);
_postOMMMsg.setMsgType(OMMMsg.MsgType.POST);
_postOMMMsg.setId(ID_COUNTER.incrementAndGet());
_postOMMMsg.setSeqNum(SEQ_NUMBER_COUNTER.incrementAndGet());
_postOMMMsg.setIndicationFlags(OMMMsg.Indication.POST_INIT | OMMMsg.Indication.POST_COMPLETE | OMMMsg.Indication.NEED_ACK);
_postOMMMsg.setAttribInfo(module, ric, RDMInstrument.NameType.RIC);
_postOMMEncoder.initialize(OMMTypes.MSG, 10000);
_postOMMEncoder.encodeMsgInit(_postOMMMsg, OMMTypes.NO_DATA, OMMTypes.FIELD_LIST);

----

Here we populate fields and value, for example

FidDef fiddef = dictionary.getFidDef("FIELD");

_postOMMEncoder.encodeFieldEntryInit(fid, fiddef.getOMMType());
_postOMMEncoder.encodeString("VALUE", fiddef.getOMMType());

----

Handle handle = getRDMLoginHandle();
OMMMsg sendMessage = (OMMMsg) _postOMMEncoder.getEncodedObject();
int submitStatus = submitMsg(handle, sendMessage, null);

requestEncoder.pool.releaseMsg(_postOMMMsg);
requestEncoder.pool.releaseEncoder(_postOMMEncoder);

----


Message Sent:

Msg Type: MsgType.POST
Msg Model Type: MARKET_PRICE
Indication Flags: POST_INIT | POST_COMPLETE | NEED_ACK
Hint Flags: HAS_ATTRIB_INFO | HAS_SEQ_NUM | HAS_ID
SeqNum: 1
Id: 1
Publisher Address: 0x0
Publisher Id: 0
AttribInfo
ServiceName: TRCC
Name: FABTEST123=FABU
NameType: 1 (RIC)
Payload: 8 bytes
FIELD_LIST
FIELD_ENTRY 393/PRIMACT_1: 0.85


Error Received;

State: UNSPECIFIED, NO_CHANGE, NACK_DENIED_BY_SRC, "PostMsg has not have container type of RSSL_DT_MSG"


Tagged:

Best Answer

  • umer.nalla
    umer.nalla LSEG
    Answer ✓

    Hi @chigozirim.kawa1

    We have been working on this offline so I just wanted to confirm the changes required to resolve this issue - for the benefit of others.

    The code the client was using was originally for posting to an ATS and therefore a few changes had to be made in order to work with TRCC

    • The nested payload message contained inside the outer Post Msg was changed from a Refresh Msg to an Update Msg
    • The X_RIC_NAME field required for ATS was removed
    • The RIC code for the instrument was added to an AttribInfo for the nested Update message (as well as the outer Post Msg)
    • The Sequence number used with ATS had to be removed for TRCC


Answers

  • Hi @chigozirim.kawa1

    It would appear the developer is only encoding a FieldList into the PostMsg.

    For TRCC my understanding is that you need to encode a nested msg i.e. a Refresh, Update or Status Msg in the outer PostMsg .

    If you refer to the RFA Java example in the Examples\com\reuters\rfa\example\omm\postingConsumer folder of the RFA Java SDK - you will note that it can operate different modes - based on the payload type specified in the config.

    If you specify update_msg, refresh_msg or status_msg in the config, then in the

    PostItemManager.doPost() method it calls the createPayloadOMMMsg() method and then encodes the resultant message as the payload for the outer PostMsg.


Welcome!

It looks like you're new here. Sign in or register to get started.

Welcome!

It looks like you're new here. Sign in or register to get started.