骆驼JMS-无法将JMSPriority设置为IBM MQ消息 [英] Camel JMS - Unable to set JMSPriority to IBM MQ Message

查看:81
本文介绍了骆驼JMS-无法将JMSPriority设置为IBM MQ消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们正尝试使用Apache Camel通过IBM mq发送JMS文本消息.除JMSPriority之外,我们几乎没有设置JMS标头属性.我们尝试设置int值,并使用resultType ="java.lang.Integer",但无法更改优先级.任何线索都将是有益的.

We are trying to send JMS text message over IBM mq using Apache Camel. We are able set few JMS header properties except the JMSPriority. We tried setting int value and used resultType="java.lang.Integer" but unable to alter priority. Any clue would be more than helpful.

 <route id="mqSender">
                 <from uri="direct:mqSender"></from>
                 <filter>
                       <simple> ${body} != null</simple>
                       <setProperty propertyName="originalRequest">
                              <simple> ${body}</simple>
                       </setProperty>
                       <setHeader headerName="JMSCorrelationID">
                              <simple>${body.messageContextVO.requestID}</simple>
                       </setHeader>
                       <setHeader headerName="VersionId">
                              <simple>${body.metadata["VersionId"]}</simple>
                       </setHeader>
                       <setHeader headerName="FunctionId">
                              <simple>${body.metadata["FunctionId"]}</simple>
                       </setHeader>
                       <setHeader headerName="Format">
                              <simple>${body.metadata["Format"]}</simple>
                       </setHeader>
                       <choice>
                              <when>
                                     <simple>${property.originalRequest.metadata["FetchPriorityValue"]}== "true"</simple>
                                     <transform>
                                            <simple>${body.formattedData}</simple>
                                     </transform>
                                     <setHeader headerName="JMSPriority">
                                           <simple> ${property.originalRequest.priority}</simple>
                                     </setHeader>

                                     <camel:setHeader headerName="CamelJmsDestinationName"><simple>queue:///${property.originalRequest.metadata["queueName"]}?targetClient=1</simple></camel:setHeader>

                              </when>
                       </choice>
                      <log message="${property.originalRequest.metadata[queueName]}"></log>
                       <recipientList>
                              <simple>wmq:queue:${property.originalRequest.metadata["queueName"]}?exchangePattern=InOnly</simple>
                       </recipientList>
                       <transform>
                              <simple>${property.originalRequest}</simple>
                       </transform>
                 </filter>
                 <!-- <to uri="bean:trackerUpdateProcessor?method=process" /> -->
          </route>

推荐答案

我们找到了使之工作的解决方案.必须在标题CamelJmsDestinationName处设置Priority属性 即

We found solution to make it work. Priority attribute is required to set at header CamelJmsDestinationName i.e,

<camel:setHeader headerName="CamelJmsDestinationName"><simple>queue:///${property.originalRequest.metadata["queueName"]}?targetClient=1&amp;priority=${dynamicValue}</simple></camel:setHeader>

发件人代码在本机代码中检查MQ目标级别的优先级值.需要在MQ目标级别上设置TimeToLive和Priority值,才能与Camel一起使用.

Sender code checks for value of priority at MQ Destination level in native code. TimeToLive and Priority values needs to set at MQ destination level to work with Camel.

这篇关于骆驼JMS-无法将JMSPriority设置为IBM MQ消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆