Trouble send XML data from FUSE to AMQ broker and read it within MDB JBoss

Latest response

How can I debug/trace this error?

We are using a Fuse on karaf sending data on a queue on a AMQ broker and JBoss MDB reading from that remote broker the queue...

Following error(s) in Jboss:

1.

2020-07-06 19:32:46,141 ERROR [org.apache.activemq.artemis.ra] (Thread-11 (ActiveMQ-client-global-threads)) AMQ154004: Failed to deliver message: javax.ejb.EJBTransactionRolledbackException: java.lang.ClassCastException: org.apache.activemq.artemis.jms.client.compatible1X.ActiveMQTextCompatibleMessage cannot be cast to javax.jms.ObjectMessage

2.

Caused by: javax.jms.JMSRuntimeException: AMQ139012: The property name 'JMS_AMQP_MA_x-opt-jms-msg-type' is not a valid java identifier.

Can I set the JMSType and override the AMQP_MA-opt-jms-msg-type from the fuse-camel-broker connection?

Best regards,
Fredrik

Responses

Hello Fredrik,

What are the versions of all components used in this scenario, i.e. version of Fuse, AMQ and JBoss EAP? Can you confirm you are using the AMQP transport to send the message from Fuse to AMQ? What transport is used to consume the message by the MDB?

Best Regards, Torsten Mielke

Hi Torsten!

FUSE:  Red Hat Fuse (7.6.0.fuse-760025-redhat-00001).
JBOSS: Red Hat JBoss Enterprise Application Platform - Version 7.2.8.GA
AMQ: Artemis version: 2.6.3.redhat-00015 (installation package amq-broker-7.2.3)
    <bean class="org.apache.qpid.jms.JmsConnectionFactory" id="jmsConnectionFactory">
        <property name="remoteURI" value="amqp://127.0.0.1:5672"/>
        <property name="username" value="admin"/>
        <property name="password" value="admin"/>
    </bean>
    <bean
        class="org.springframework.jms.connection.SingleConnectionFactory" id="jmsCachingConnectionFactory">
        <property name="targetConnectionFactory" ref="jmsConnectionFactory"/>
    </bean>
    <bean class="org.apache.camel.component.jms.JmsConfiguration" id="jmsConfig">
        <property name="connectionFactory" ref="jmsCachingConnectionFactory"/>
        <property name="cacheLevelName" value="CACHE_CONSUMER"/>
    </bean>
    <bean class="org.apache.camel.component.amqp.AMQPComponent" id="amqp">
        <property name="configuration" ref="jmsConfig"/>
    </bean>

  <route id="jms-cia-rest">
            <from id="idRecNotif" uri="direct:notification"/>
            <to id="idStoreWO" uri="amqp:queue:CoordReceive?exchangePattern=InOnly"/>
   </route>

Can I control the mapping between AMQP Messaging Annotation for the JMSType? Read somewhere that I could add something behind the uri:"amqp:queue...." to line, ?jmstype...

If I use 61616 another protocol it works.

<bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="tcp://127.0.0.1:61616"/>
    </bean>

Best regards, Fredrik