我想使用自定义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 [enablingetc的各种组合..它要么将所有优先级设置为4;或者优先级保持为零,尽管设置例如= 6优先级]。通过创建自己的jmsOperations并明确地传输JMSPriority值。
异常追踪:
引起:org.apache.camel.FailedToCreateProducerException:失败 为端点创建生产者: 端点[jmsErf://队列:MQDEV.MYQ.ERROR]。原因: java.lang.ClassCastException:无法转换为blabla.MyJmsTemplate org.apache.camel.component.jms.JmsConfiguration $ CamelJmsTemplate at org.apache.camel.component.jms.JmsProducer.testConnectionOnStartup(JmsProducer.java:458) 在 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) 在 org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:387) ... 115更多引起:java.lang.ClassCastException: bla.MyJmsTemplate无法转换为 org.apache.camel.component.jms.JmsConfiguration $ CamelJmsTemplate at org.apache.camel.component.jms.JmsProducer.testConnectionOnStartup(JmsProducer.java:447) ... 119更多
有人能指出我在骆驼中使用jmsOptions吗?
答案 0 :(得分:0)
你使用的Camel版本是什么?
如果要自己映射到JMS消息或从JMS消息映射,则应使用自定义messageConverter。
如果设置preserveMessageQos = true,则应保留JMSPriority。