How can I post RefreshMsgs instead of UpdateMsgs

I have this code for posting contributions, which is working correctly to contribute updates to our items. (I have ommited the serviceName and RIC names)

// create an update message for our item
UpdateMsg nestedUpdateMsg = EmaFactory.createUpdateMsg()
.streamId(_postID)
.payload(fieldList);
// create a post message, and embed the update
PostMsg postMsg = EmaFactory.createPostMsg()
.postId(_postID++)
.serviceName("ServiceName")
.name("RICname")
.solicitAck(true)
.payload(nestedUpdateMsg)
.complete(true);
// send to realtime distribution system
_ommConsumer.submit(postMsg, _streamHandle);

I would like to send an entirely fresh set of data to overwrite what is currently in the item by using a RefreshMsg rather than an UpdateMsg. So I embedd a RefreshMsg into the PostMsg in order to send this new data as an image, as shown below:

// create a refresh message for our item
RefreshMsg nestedUpdateMsg = EmaFactory.createRefreshMsg();
nestedUpdateMsg.payload(fieldList).complete(true);
nestedUpdateMsg.state(OmmState.StreamState.OPEN, OmmState.DataState.OK);

// create a post message, and embed the refresh
PostMsg postMsg = EmaFactory.createPostMsg()
.postId(_postID++)
.serviceName("serviceName")
.name("RICname")
.solicitAck(true)
.payload(nestedUpdateMsg)
.complete(true);
// send to realtime distribution system
_ommConsumer.submit(postMsg, _streamHandle);

Now when posting this to RCC, I get the following NACK.

AckMsg

streamId="1"

domain="MarketPrice Domain"

ackId="0"

nackCode="DeniedBySource"

text="PostMsg received with no update as payload"

name="------------"

nameType="1"

serviceId="259"

AckMsgEnd



Am I going about doing this wrong? How can I post a fresh set of data to my item?

Best Answer

  • Gurpreet
    Answer ✓

    Hi @Faris,

    The Refinitiv Contribution Channel does not allow posting Refresh messages. Any fields that are sent in the UpdateMsg are automatically applied to, and overwrite the data in that particular item. There is no need for you to explicitly send a refresh message - just update all the fields (that your application is permissioned for) and send an update message.

Answers

  • Hello @Faris

    My colleague already gives you a clear explanation about the RCC Update Message posting. I would like to add the following RCC Off-Stream Post message conditions:

    • The Ack attribute must be true
    • The message must contain the PostID attribute and value
    • The Key information includes Name and Service attributes that refer to the contribution RIC name and RCC contribution service name
    • The Message payload must be an Update message type
    • The Message payload must contain the same Key information as the Post message