question

Upvotes
Accepted
26 3 3 5

Invalid Message Syntax on EMA Java Posting Consumer

I am using example 341 (Consumer Market Price Off Stream). Using that example, I am able to publish and receive updated from an ATS server. However, when I try with Market Link (MLIP) I get the error below.

Received AckMsg. Item Handle: 1 Closure:com.thomsonreuters.ema.access.OmmConsumerImpl@4dfed437
Item Name: XXX=YYY
Service Name: not set
Ack Id: 1
Nack Code:DeniedBySource
Text: (6)Invalid Message Syntax

We have an Excel using a Reuters plug-in which can update this RIC. Both the Excel and Java are accessing the same ADS server.

There are two relevant lines in the code.

submit(postMsg.postId(1).serviceName(XXX).name(RIC)

and

consumer.registerClient(..serviceName(YYY).name(RIC)

When XXX = MARKETLINK and YYY = IDN_RDF I get the RIC response and then I get the error above on submit().

When XXX = IDN_RDF and YYY = IDN_RDF I get the RIC response and then I get for the submit()

Nack Code: SourceDown
Text: A9: Service is unavailable

When XXX = MARKETLINK and YYY = MARKETLINK I get no RIC response. but "Item State: Open / Suspect / None / 'Request Timeout' and then I get the error 'Invalid Message Syntax' submit().


I have seen questions and answers on this, but with respect to RFA Java, but the solutions do not seem to work.

Edit: Consumer.txt original code from the examples attached. The only different to my example is the credentials, service and RIC.

eikon-data-apielektronrefinitiv-realtimeelektron-sdktreprrtema-apielektron-message-apiADS
consumer.txt (9.7 KiB)
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
25k 87 11 23

Hi @anthony.leon

Ok - so you are using the existing example with nothing but service and RIC name changes.

My understanding is that MLIP can only accept UpdateMsgs and not RefreshMsgs, so try

UpdateMsg nestedUpdateMsg = EmaFactory.createUpdateMsg(); 

instead of RefreshMsg and try posting that instead

Also ensure the fields + field content type you are posting matches what the RIC already contains. You do not need to post every field - you can do a subset of the existing fields if required.

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.

Many Many thanks for your quick and helpful response. Your suggestion fixed the problem. Just for completeness (if anyone else has this issue), the line below;

nestedRefreshMsg.payload(nestedFieldList).complete(true);

needed to be replaced with;

nestedUpdateMsg.payload(nestedFieldList);
Upvotes
25k 87 11 23

Hi @anthony.leon

MARKETLINK is the service you need to post to and IDN_RDF is the service where you should be able to consume the RIC to confirm your changes are taking effect.

So, use MARKETLINK in your Submit Postmsg call and IDN_RDF for the registerclient

The following means the contribution server is not happy with the format of the data/message you submitted.

Nack Code:DeniedBySource
Text: (6)Invalid Message Syntax

You would need to share the full code you are using to populate your PostMsg and submit OR you can raise a support ticket if you wish to do this offline.

You can also need to check with your MarketData team that the particular RIC you are posting to is configured to receive the payload you are submitting.

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.

Thanks for responding so quickly. I have attached the sample. With respect to that last question about the MarketDataTeam, neither them nor our local support teams know the answer.