Search code examples
jsonactivemq-classicstomp

How to use JMS Message Transformation in ActiveMQ with Stomp/JSON


I am sending messages in JSON format to an ActiveMQ server. I am trying to use JMS Transformation to transform the JSON encoded object into a true Java Object in hopes of being able to use selectors on the data inside.

Here is a link to the documentation on Stomp and Message Transformation. Here is a link to a discussion on the patch where someone shows an example of a legal JSON object

The format of the JSON objects I am sending (in pretty print) are similar to this:

{
   "msg": {
      "flag1" : "value1",
      "flag2" : "value2"
   }
}

The messages arrive in the message queue, but with the transformation-error property set to 'msg : msg'.


Solution

  • you can use any JSON notation for your jms-object-json transformations as long as XStream can handle it. You can take a look at test cases for some examples. There, we use SamplePojo class:

    https://svn.apache.org/repos/asf/activemq/trunk/activemq-stomp/src/test/java/org/apache/activemq/transport/stomp/SamplePojo.java

    which is properly annotated so it can be represented with the following JSON

    {"pojo":{ "name":"Dejan", "city":"Belgrade" }}

    You can try using the same approach for your classes.

    Hope this helps, Dejan