Using JMSMessage and consuming them later can be annoying. Imo its better to use publishable documents.
This is the important part. You need to get the message from where you publish to JMS. Check the publisher service and then compare it with consumer service. For example you can’t consume a message from object if you published it to string.
Avoiding JMS messages whenever possible is more convenient though, I would recommend changing the structure to use publishable documents instead. If the publisher is 3rd party then you should create a wrapper service instead of giving them JMS end points.