I am using the Java EMA library (https://github.com/Refinitiv/Elektron-SDK/tree/master/Java/Ema) and consuming messages by implementing an OmmConsumerClient.
We want to forward the messages onto our downstream clients but also to persist the raw messages in a file so that they can be decoded later for debugging.
Is it possible to serialise/deserialise these messages (RefreshMsg/UpdateMsg etc)?
First thing to note is that for exchange fee liable data you cannot redistribute the data to downstream subscribers without potentially breaching data usage licenses. Please check with your Refinitiv account representative before proceeding.
From a technical aspect, you can clone the incoming message by using EmaFactory.createRefreshMsg(msg), createUpdateMsg(msg) etc. Once you have the cloned copy you can manipulate the msg, e.g. pass it off to another thread for parsing etc. See the EMA Java Reference Manual for further details.
Also, not sure if this is what you had in mind in terms of debugging, but you can enable XmlTraceToStdout and redirect that. The XMLTrace output contains all msg sent and received by the API to the server. You can then refer to the XML for debugging purposes.