Deprecation of NMS in Jboss version 7

Latest response

Hi, I have a question about the meaning of the word "deprecated". In the release notes for Jboss 7, it says the NMS client is deprecated and we are encouraged to use an AMQP client as a replacement for NMS on the .Net side of things.

However, we have a large number of apps that use the NMS client and are wondering if we can expect them to work against version 7 on a short term basis until we can migrate them one at a time to AMQP.

While testing Jboss 7 I am finding that NMS is not working very well for me and perhaps some new internal code related to the openwire protocol may be at fault. Below is an error and callstack I keep seeing in the logs on the broker. I get it when connecting from an 6.2 NMS client ("jboss-a-mq-nms-6.2.0.redhat-138")

The broker is Red Hat JBoss AMQ 7.0.2.GA running on Windows.

-------here is the error in broker logs--------
01:31:30,439 WARN [org.apache.activemq.artemis.core.server] Error during message dispatch: java.io.UTFDataFormatException: bad string
at org.apache.activemq.util.DataByteArrayInputStream.readUTF(DataByteArrayInputStream.java:263) [activemq-client-5.11.0.redhat-630262.jar:5.11.0.redhat-630262]
at org.apache.activemq.openwire.v10.BaseDataStreamMarshaller.looseUnmarshalString(BaseDataStreamMarshaller.java:571) [activemq-client-5.11.0.redhat-630262.jar:5.11.0.redhat-630262]
at org.apache.activemq.openwire.v10.MessageIdMarshaller.looseUnmarshal(MessageIdMarshaller.java:122) [activemq-client-5.11.0.redhat-630262.jar:5.11.0.redhat-630262]
at org.apache.activemq.openwire.OpenWireFormat.doUnmarshal(OpenWireFormat.java:357) [activemq-client-5.11.0.redhat-630262.jar:5.11.0.redhat-630262]
at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:194) [activemq-client-5.11.0.redhat-630262.jar:5.11.0.redhat-630262]
at org.apache.activemq.artemis.core.protocol.openwire.OpenWireMessageConverter.toAMQMessage(OpenWireMessageConverter.java:716) [artemis-openwire-protocol-2.0.0.amq-700011-redhat-1.jar:]
at org.apache.activemq.artemis.core.protocol.openwire.OpenWireMessageConverter.createMessageDispatch(OpenWireMessageConverter.java:427) [artemis-openwire-protocol-2.0.0.amq-700011-redhat-1.jar:]
at org.apache.activemq.artemis.core.protocol.openwire.amq.AMQConsumer.handleDeliver(AMQConsumer.java:224) [artemis-openwire-protocol-2.0.0.amq-700011-redhat-1.jar:]
at org.apache.activemq.artemis.core.protocol.openwire.amq.AMQSession.sendMessage(AMQSession.java:250) [artemis-openwire-protocol-2.0.0.amq-700011-redhat-1.jar:]

at org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.deliverStandardMessage(ServerConsumerImpl.java:1080) [artemis-server-2.0.0.amq-700011-redhat-1.jar:2.0.0.amq-700011-redhat-1]

... please check the stuff that refers to "OpenWireMessageConverter.toAMQMessage"
...
ultimately this makes use of a "readUTF" method and fails with
UTFDataFormatException: bad string

This has happend with several different types of message bodies. I've rewritten my NMS consumer several ways and the problem won't go away. If I write a small sample AMQP client and get the same message from the broker I have no problems.

Thanks in advance for any guidance.

Responses

Having worked with technical support for a number of weeks, my impression is that there was very little testing of NMS client connectivity against Jboss 7 (at least not prior to September 2017). Perhaps there will be more work in this area prior to the next rollup.

In short, NMS certainly does seem like a deprecated client where the JBOSS AMQ product is concerned. The NMS client will probably not see any more enhancements nor any major bug fixes so long as workarounds are available. A case in point is the following issue that was opened for Jboss AMQ 6.3:

Issue

The long-term direction is for .Net clients to start using the AMQP.Net Lite interface (ie. the AMQP protocol).

Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.