Apache camel Camel-使用自定义jmsOperations:无法强制转换为org.apache.Camel.component.jms.JmsConfiguration$CamelJmsTemplate
我想使用一个定制的jms操作,当我尝试得到一个类强制转换异常:不能强制转换到org.apache.camel.component.jms。JmsConfiguration$CamelJmsTemplate 配置:Apache camel Camel-使用自定义jmsOperations:无法强制转换为org.apache.Camel.component.jms.JmsConfiguration$CamelJmsTemplate,apache-camel,spring-jms,Apache Camel,Spring Jms,我想使用一个定制的jms操作,当我尝试得到一个类强制转换异常:不能强制转换到org.apache.camel.component.jms。JmsConfiguration$CamelJmsTemplate 配置: <bean id="jmsErf" class="org.apache.camel.component.jms.JmsComponent"> <property name="jmsOperations" ref="myJmsTemplate" />
<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>
为什么我要尝试JMS操作:
我只需要保持原有的精神状态。是的,我确实尝试过preserveQoS explicitQoS[各种启用的组合..它要么将所有优先级设置为4;要么尽管设置了eg=6优先级,优先级仍然为零]。通过创建自己的JMS操作并明确传递JMS优先权价值
异常跟踪:
原因:org.apache.camel.FailedToCreateProducerException:未能
为端点创建生产者:
端点[jmsErf://队列:MQDEV.MYQ.ERROR]。原因:
java.lang.ClassCastException:blabla.MyJmsTemplate无法强制转换为
org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate位于
org.apache.camel.component.jms.JmsProducer.testconnectionnstartup(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位于
org.apache.camel.component.jms.JmsProducer.TestConnectionOnInstallup(JmsProducer.java:447)
... 119更多
有人能告诉我在camel中使用jmsOptions吗?您使用的camel版本是什么 如果您想自己映射到JMS消息或从JMS消息映射,则应该使用自定义messageConverter
如果设置preserveMessageQos=true,则应该保留JMSPriority 骆驼版本是2.10.0。当我使用Spring集成实现测试同一个流时,我可以看到MQ中的JMSPriority(它排除了MQ,或者任何底层api去掉了JMSPriority),您是否在使用IBM WebSphere MQ?因此,请确保将其设置为Java模式。有一些特殊的选项需要设置AFAIR。我认为我们可以排除特殊选项,因为Spring集成示例带有为同一组IBM MQ队列设置的JMSPriority值。
MyJmsTemplate extends org.springframework.jms.core.JmsTemplate implements
org.springframework.jms.core.JmsOperations { .. no code :)