我想使用自定义 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 用法?