0

我想使用自定义 jmsOperations,当我尝试获得类转换异常时:无法转换为 org.apache.camel.component.jms。JmsConfiguration$CamelJmsTemplate

配置:

<bean id="jmsErf" class="org.apache.camel.component.jms.JmsComponent">
    <property name="jmsOperations" ref="myJmsTemplate" />   
    <property name="preserveMessageQos" value="true"/>
    <property name="explicitQosEnabled" value="false"/>
    <property name="testConnectionOnStartup" value="true"/>
    <!--property name="useMessageIDAsCorrelationID" value="true" / WARNING! Do not use this as we need to copy only in the beginning not everywhere -->
    <property name="transactionManager" ref="jpaTransactionManager" />
    <property name="transacted" value="true" />
</bean>

<bean name="myJmsTemplate" class="blabla.MyJmsTemplate">
<property name="connectionFactory">
    <bean class="jms.MQConnectionFactory">
        <property name="queueManagerName" value="${Queue.My.manager}" />
        <property name="throwOnInvalidMessageProperty" value="false" />
    </bean>
</property>
</bean>

我创建的示例类

MyJmsTemplate extends org.springframework.jms.core.JmsTemplate implements
        org.springframework.jms.core.JmsOperations { .. no code :)

为什么我要尝试 jmsOperations:我只需要维护原始的 JMSPriority。是的,我确实尝试过preserveQoS explicitQoS [启用等的各种组合。它要么将所有优先级设置为4;要么将所有优先级设置为4。或尽管设置了 eg=6 优先级],但优先级仍然为零。通过创建我自己的 jmsOperations 并显式传输 JMSPriority 值。

异常跟踪:

原因:org.apache.camel.FailedToCreateProducerException:无法为端点创建生产者:端点 [jmsErf://queue:MQDEV.MYQ.ERROR]。原因:java.lang.ClassCastException: blabla.MyJmsTemplate 无法在 org.apache.camel.component.jms.JmsProducer.testConnectionOnStartup(JmsProducer.java:458) 处转换​​为 org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate org.apache.camel.component.jms.JmsProducer.doStart(JmsProducer.java:469) 在 org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60) 在 org.apache.camel.util.ServiceHelper。 startService(ServiceHelper.java:62) at org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:387) ... 115 更多原因:java.lang.ClassCastException: bla.MyJmsTemplate 无法转换为 org. apache.camel.component.jms。

谁能指出我在骆驼中的 jmsOptions 用法?

4

1 回答 1

0

你用什么骆驼版本?

如果您想自己映射到 JMS 消息/从 JMS 消息映射,您应该使用自定义 messageConverter。

如果设置 preserveMessageQos=true,则应该保留 JMSPriority。

于 2012-11-28T07:27:16.507 回答