Unsupported message amqp-value type: map

Does solace message broker support amqp-value type - map ?
I using Apache Camel to send message to the broker. However, i faced an exception when sending the following message to Solace message broker.
{message=up, uptime=1000.200}

Log Message :

 
Caused by: org.apache.qpid.jms.provider.ProviderException: unsupported message amqp-value type: map [condition = amqp:not-implemented]
at org.apache.qpid.jms.provider.amqp.AmqpSupport.convertToNonFatalException(AmqpSupport.java:181)
at org.apache.qpid.jms.provider.amqp.AmqpFixedProducer.applyDeliveryStateUpdate(AmqpFixedProducer.java:249)
at org.apache.qpid.jms.provider.amqp.AmqpFixedProducer.processDeliveryUpdates(AmqpFixedProducer.java:220)
at org.apache.qpid.jms.provider.amqp.AmqpProvider.processUpdates(AmqpProvider.java:1016)
at org.apache.qpid.jms.provider.amqp.AmqpProvider.onData(AmqpProvider.java:878)
at org.apache.qpid.jms.transports.netty.NettyTcpTransport$NettyTcpTransportHandler.channelRead0(NettyTcpTransport.java:548)
at org.apache.qpid.jms.transports.netty.NettyTcpTransport$NettyTcpTransportHandler.channelRead0(NettyTcpTransport.java:541)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800)
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:509)
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:407)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
 
``

Hi @dreamoka ,

Solace does support the JMS MapMessage type which I would have thought this would be using.

Are you using this Camel component:
https://camel.apache.org/components/4.4.x/amqp-component.html
?

Can you share what your config looks like?

Our SMF -based JMS API supports MapMessage. But this is AMQP… we support the protocol, but perhaps we don’t support this message format specifically?

EDIT: yup, we don’t support this with AMQP: https://docs.solace.com/API/AMQP/Client-Support.htm?Highlight=mapmessage Thanks @vlam …!

You could try using the “regular” SMF/native JMS API…?

Nice find @Aaron .

@dreamoka to Aaron’s point you should be able to use the camel-jms component instead:
https://camel.apache.org/components/4.4.x/jms-component.html

I am using
https://camel.apache.org/components/4.4.x/amqp-component.html
. What is different between
https://camel.apache.org/components/4.4.x/amqp-component.html
and
https://camel.apache.org/components/4.4.x/jms-component.html
? What is native JMS API?

Hi @dreamoka ,

AMQP is a protocol, whereas JMS is a standard API. The JMS standard provided more flexibility for vendors to implement it how they want. So if you use the JMS option with Camel you would basically be dropping the Solace JMS library (jar) in place and then that will communicate with Solace brokers using the JMS standard over SMF (the Solace protocol).

More info on AMQP vs. JMS here:
Difference between AMQP and JMS - GeeksforGeeks.

Hope that helps!