apache camel - How to set ApplicationIdData using MQQueueConnectionFactory? -


trying figure out camel/spring configuration set applicationiddata using jms.

i know java way below, set mqoo_set_identity_context using below

int putoptions =  mqconstants.mqpmo_set_identity_context; pmo.options =putoptions; 

and set applicationiddata as:

mqmessage msg = new mqmessage(); msg.applicationiddata = "someid"; msg.writestring(qmessage); 

queue.put(msg, pmo);

question is, how set applicationiddata using jms/camel/spring configuration. below current camel configuration.

<bean class="org.apache.camel.component.jms.jmscomponent" id="jmsconnection">         <property name="connectionfactory" ref="mqconnectionfactorywrapper" />         <property name="acknowledgementmodename" value="auto_acknowledge" />     </bean>      <bean id="connectionfactory" class="com.ibm.mq.jms.mqqueueconnectionfactory">         <property name="hostname" value="${hostmname}" />         <property name="port" value="${port}" />         <property name="queuemanager" value="${mq_qmname}" />         <property name="channel" value="${mq_internal_channel}" />         <property name="transporttype" value="1" />          <!-- transport type 1 means pure tcp/ip without local client -->     </bean>      <bean id="mqconnectionfactorywrapper"         class="org.springframework.jms.connection.cachingconnectionfactory">         <property name="targetconnectionfactory" ref="connectionfactory" />         <property name="sessioncachesize" value="500" />     </bean>      <bean id="jmstransactionmanager"         class="org.springframework.jms.connection.jmstransactionmanager">         <property name="connectionfactory" ref="mqconnectionfactorywrapper" />     </bean>      <bean id="propagation_requires_new"  class="org.apache.camel.spring.spi.springtransactionpolicy">         <property name="transactionmanager" ref="jmstransactionmanager" />         <property name="propagationbehaviorname" value="propagation_requires_new" />     </bean> 

i have gone through below links, couldnt find right answer

http://forum.spring.io/forum/spring-projects/integration/jms/97168-how-to-set-wmqconstants-wmq-mqmd-read-enabled-in-spring

http://www.ibm.com/support/knowledgecenter/ssfksj_7.0.1/com.ibm.mq.csqzaw.doc/jm41030_.htm

https://www.ibm.com/support/knowledgecenter/en/ssfksj_9.0.0/com.ibm.mq.dev.doc/q032010_.htm

all needed find way in camel config set properties in destination , set header. set destination in header

<setheader headername="cameljmsdestinationname"> queue:///q_name?targetclient=1&mdwri‌​teenabled=true&a‌​mp;mdmessagecontext=‌​1</setheader>

note: setting mdwri‌​teenabled=true equal to

 // enable mqmd write   dest.setbooleanproperty(wmqconstants.wmq_mqmd_write_enabled, true); 

setting mdmessagecontext=‌​1 equal

// optionally, set message context if applicable md field   dest.setintproperty(wmqconstants.wmq_mqmd_message_context,      wmqconstants.wmq_mdctx_set_identity_context); 

then set applicationiddata <setheader headername="jms_ibm_mqmd_applidentitydata" > bsi_xml_canada_ack bsi_xml_canada_ack </setheader>

complete code:

<route id="validateandack" streamcache="true">             <from uri="sql:{{validatecdmsg}}" />             <setheader headername="cameljmsdestinationname"> <constant>queue:///q_name?targetclient=1&amp;mdwriteenabled=true&amp;mdmessagecontext=1</constant></setheader>              <setheader headername="mdwriteenabled">  <simple>true</simple></setheader> <!-- may redundant-->             <setheader headername="mdmessagecontext">  <simple>2</simple></setheader> <!-- may redundant-->              <setheader headername="jms_ibm_mqmd_applidentitydata" >                 <simple>app_id_name</simple>             </setheader>             <setheader headername="jms_ibm_mqmd_applorigindata" >                 <simple>app_id_name</simple>              </setheader>              <to uri="bean:processbean?method=setprocessid" /> 

i not sure jms_ibm_mqmd_applorigindata required.


Comments