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://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&mdwriteenabled=true&mdmessagecontext=1</setheader>
note: setting mdwriteenabled=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&mdwriteenabled=true&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
Post a Comment