You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by ravi21588 <ra...@gmail.com> on 2017/03/13 15:50:24 UTC

Sending MQMD headers from Apache camel.

Hi All,
iam using Jboss Fuse service works 6.0 with Switchyard 1.1 and camel 2.10.
iam trying to set MQMD headers for the JMS message and send it to IBM MQ.
By seeing camel documentation and various blogs i came to know that this can
be achieved by using Spring destinationResolver.
I would like to set the advanced options destinationResolver as a param and
set the MQMD headers.
Can you please tell me how can i achieve it.

Switchyardxml:
<?xml version="1.0" encoding="UTF-8"?>
<sy:switchyard xmlns:camel="urn:switchyard-component-camel:config:1.1"
xmlns:jms="urn:switchyard-component-camel-jms:config:1.1"
xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200912"
xmlns:sy="urn:switchyard-config:switchyard:1.1" name="ScaToJms"
targetNamespace="urn:com.company.esb.destinationsystem.in.read.sync:ScaToJms:1.0">
  <sca:composite name="ScaToJms"
targetNamespace="urn:com.company.esb.destinationsystem.in.read.sync:ScaToJms:1.0">
    <sca:component name="destinationsystemInReadSimulator">
      <camel:implementation.camel>
        <camel:xml path="route/camelroute.xml"/>
      </camel:implementation.camel>
      <sca:service name="destinationsystemInReadJmsService">
        <sca:interface.java
interface="com.company.esb.common.services.esbMessageInOutService"/>
      </sca:service>
      <sca:reference name="destinationsystemService">
        <sca:interface.java
interface="com.company.esb.common.services.RunnableInOutService"/>
      </sca:reference>
      <sca:reference name="AuditLodestinationsystemerService">
        <sca:interface.java
interface="com.company.esb.common.services.AuditLodestinationsystemerService"/>
      </sca:reference>
      <sca:reference name="ExceptionHandlerService">
        <sca:interface.java
interface="com.company.esb.common.services.ExceptionHandlerService"/>
      </sca:reference>
    </sca:component>
    <sca:service name="destinationsystemInReadJmsService"
promote="destinationsystemInReadSimulator/destinationsystemInReadJmsService">
      <sca:interface.java
interface="com.company.esb.common.services.esbMessageInOutService"/>
      <sca:binding.sca name="Sca1"/>
    </sca:service>
    <sca:reference name="destinationsystemService" multiplicity="0..1"
promote="destinationsystemInReadSimulator/destinationsystemService">
      <sca:interface.java
interface="com.company.esb.common.services.RunnableInOutService"/>
      <jms:binding.jms name="jms">
        <jms:contextMapper includes="JMS.*"/>
        <jms:additionalUriParameters>
          <jms:parameter name="disableTimeToLive" value="true"/>
          <jms:parameter name="useMessageIDAsCorrelationID" value="true"/>
          <jms:parameter name="jmsMessageType" value="Text"/>
          <jms:parameter name="destinationResolver"
value="com.company.esb.destinationsystem.in.read.customDestinationResolver"/>
        </jms:additionalUriParameters>
        <jms:queue>${destinationsystem.Claws.Read.In}</jms:queue>
       
<jms:connectionFactory>${destinationsystem.In.Read.ConnectionFactoryname}</jms:connectionFactory>
        <jms:replyTo>${destinationsystem.Claws.Read.Out}</jms:replyTo>
       
<jms:requestTimeout>${destinationsystem.In.Read.destinationsystemResponseTimeout}</jms:requestTimeout>
      </jms:binding.jms>
    </sca:reference>
    <sca:reference name="AuditLodestinationsystemerService"
multiplicity="0..1"
promote="destinationsystemInReadSimulator/AuditLodestinationsystemerService">
      <sca:interface.java
interface="com.company.esb.common.services.AuditLodestinationsystemerService"/>
      <sca:binding.sca sy:target="AuditLodestinationsystemerService"
sy:targetNamespace="urn:com.company.esb.components:AuditLodestinationsystemer:1.0"
name="ScaAudit"/>
    </sca:reference>
    <sca:reference name="ExceptionHandlerService" multiplicity="0..1"
promote="destinationsystemInReadSimulator/ExceptionHandlerService">
      <sca:interface.java
interface="com.company.esb.common.services.ExceptionHandlerService"/>
      <sca:binding.sca sy:target="ExceptionHandlerService"
sy:targetNamespace="urn:com.company.esb.components:ExceptionHandler:1.0"
name="ScaExceptionHandler"/>
    </sca:reference>
  </sca:composite>
  <sy:domain>
    <sy:properties>
      <sy:property name="org.switchyard.handlers.messageTrace.enabled"
value="false"/>
    </sy:properties>
  </sy:domain>
</sy:switchyard>

customDestinationResolver.java

package com.company.esb.destinationsystem.in.read;

import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueSession;
import javax.jms.Session;

import
org.springframework.jms.support.destination.DynamicDestinationResolver;

import com.ibm.mq.jms.MQQueue;




public class customDestinationResolver extends DynamicDestinationResolver {
	
	 private final boolean excludeRFHeaders;

	    public customDestinationResolver(boolean excludeRFHeaders) {
	        this.excludeRFHeaders = excludeRFHeaders;
	    }

//	    public Destination resolveDestinationName(Session session, String
destinationName, boolean pubSubDomain) throws JMSException {
//	        MQDestination destination = (MQDestination)
super.resolveDestinationName(session, destinationName, pubSubDomain);
//	        destination.setBooleanProperty(WMQ_MQMD_WRITE_ENABLED, true);
//	        destination.setBooleanProperty(WMQ_MQMD_READ_ENABLED, true);
//	        destination.setIntProperty(WMQ_MQMD_MESSAGE_CONTEXT,
WMQ_MDCTX_SET_ALL_CONTEXT);
//	        if (excludeRFHeaders) {
//	            destination.setTargetClient(1);
//	        }
//	        return destination;
//	    }
//	    
	    protected Queue resolveQueue(Session session, String queueName) throws
JMSException {
	        MQQueue dest = null;
	        if (session instanceof QueueSession) {
	           dest = (MQQueue)((QueueSession) session).createQueue(queueName);
	        }
	        else {
	            dest = (MQQueue)session.createQueue(queueName);
	        }
	        // use IBM MQ API to set properties on the Destination
	        dest.setMQMDWriteEnabled(true);
	        dest.setMQMDMessageContext(1);

	        return dest;
	    }

}



Iam gettting below exception:

Caused by: java.lang.NoClassDefFoundError:
org/springframework/jms/support/destination/DynamicDestinationResolver
	at java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.7.0_80]
	at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
[rt.jar:1.7.0_80]
	at
org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:361)
[jboss-modules.jar:1.3.3.Final-redhat-1]
	at
org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:482)
[jboss-modules.jar:1.3.3.Final-redhat-1]
	... 20 more
Caused by: java.lang.ClassNotFoundException:
org.springframework.jms.support.destination.DynamicDestinationResolver from
[Module "deployment.GGInRead.jar:main" from Service Module Loader]
	at
org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213)
[jboss-modules.jar:1.3.3.Final-redhat-1]
	at
org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459)
[jboss-modules.jar:1.3.3.Final-redhat-1]
	at
org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408)
[jboss-modules.jar:1.3.3.Final-redhat-1]
	at
org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389)
[jboss-modules.jar:1.3.3.Final-redhat-1]
	at
org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134)
[jboss-modules.jar:1.3.3.Final-redhat-1]
	... 24 more


Can you please let me know if there is anything wrong in my code,also it
would be great if you can  share an example.



--
View this message in context: http://camel.465427.n5.nabble.com/Sending-MQMD-headers-from-Apache-camel-tp5795370.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Sending MQMD headers from Apache camel.

Posted by Tomohisa Igarashi <tm...@gmail.com>.
Ravi, I said "DO NOT post SwitchYard or JBoss question here" again and again. Please stop spamming.

On 03/14/2017 12:50 AM, ravi21588 wrote:
> Hi All,
> iam using Jboss Fuse service works 6.0 with Switchyard 1.1 and camel 2.10.
> iam trying to set MQMD headers for the JMS message and send it to IBM MQ.
> By seeing camel documentation and various blogs i came to know that this can
> be achieved by using Spring destinationResolver.
> I would like to set the advanced options destinationResolver as a param and
> set the MQMD headers.
> Can you please tell me how can i achieve it.
>
> Switchyardxml:
> <?xml version="1.0" encoding="UTF-8"?>
> <sy:switchyard xmlns:camel="urn:switchyard-component-camel:config:1.1"
> xmlns:jms="urn:switchyard-component-camel-jms:config:1.1"
> xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200912"
> xmlns:sy="urn:switchyard-config:switchyard:1.1" name="ScaToJms"
> targetNamespace="urn:com.company.esb.destinationsystem.in.read.sync:ScaToJms:1.0">
>   <sca:composite name="ScaToJms"
> targetNamespace="urn:com.company.esb.destinationsystem.in.read.sync:ScaToJms:1.0">
>     <sca:component name="destinationsystemInReadSimulator">
>       <camel:implementation.camel>
>         <camel:xml path="route/camelroute.xml"/>
>       </camel:implementation.camel>
>       <sca:service name="destinationsystemInReadJmsService">
>         <sca:interface.java
> interface="com.company.esb.common.services.esbMessageInOutService"/>
>       </sca:service>
>       <sca:reference name="destinationsystemService">
>         <sca:interface.java
> interface="com.company.esb.common.services.RunnableInOutService"/>
>       </sca:reference>
>       <sca:reference name="AuditLodestinationsystemerService">
>         <sca:interface.java
> interface="com.company.esb.common.services.AuditLodestinationsystemerService"/>
>       </sca:reference>
>       <sca:reference name="ExceptionHandlerService">
>         <sca:interface.java
> interface="com.company.esb.common.services.ExceptionHandlerService"/>
>       </sca:reference>
>     </sca:component>
>     <sca:service name="destinationsystemInReadJmsService"
> promote="destinationsystemInReadSimulator/destinationsystemInReadJmsService">
>       <sca:interface.java
> interface="com.company.esb.common.services.esbMessageInOutService"/>
>       <sca:binding.sca name="Sca1"/>
>     </sca:service>
>     <sca:reference name="destinationsystemService" multiplicity="0..1"
> promote="destinationsystemInReadSimulator/destinationsystemService">
>       <sca:interface.java
> interface="com.company.esb.common.services.RunnableInOutService"/>
>       <jms:binding.jms name="jms">
>         <jms:contextMapper includes="JMS.*"/>
>         <jms:additionalUriParameters>
>           <jms:parameter name="disableTimeToLive" value="true"/>
>           <jms:parameter name="useMessageIDAsCorrelationID" value="true"/>
>           <jms:parameter name="jmsMessageType" value="Text"/>
>           <jms:parameter name="destinationResolver"
> value="com.company.esb.destinationsystem.in.read.customDestinationResolver"/>
>         </jms:additionalUriParameters>
>         <jms:queue>${destinationsystem.Claws.Read.In}</jms:queue>
>
> <jms:connectionFactory>${destinationsystem.In.Read.ConnectionFactoryname}</jms:connectionFactory>
>         <jms:replyTo>${destinationsystem.Claws.Read.Out}</jms:replyTo>
>
> <jms:requestTimeout>${destinationsystem.In.Read.destinationsystemResponseTimeout}</jms:requestTimeout>
>       </jms:binding.jms>
>     </sca:reference>
>     <sca:reference name="AuditLodestinationsystemerService"
> multiplicity="0..1"
> promote="destinationsystemInReadSimulator/AuditLodestinationsystemerService">
>       <sca:interface.java
> interface="com.company.esb.common.services.AuditLodestinationsystemerService"/>
>       <sca:binding.sca sy:target="AuditLodestinationsystemerService"
> sy:targetNamespace="urn:com.company.esb.components:AuditLodestinationsystemer:1.0"
> name="ScaAudit"/>
>     </sca:reference>
>     <sca:reference name="ExceptionHandlerService" multiplicity="0..1"
> promote="destinationsystemInReadSimulator/ExceptionHandlerService">
>       <sca:interface.java
> interface="com.company.esb.common.services.ExceptionHandlerService"/>
>       <sca:binding.sca sy:target="ExceptionHandlerService"
> sy:targetNamespace="urn:com.company.esb.components:ExceptionHandler:1.0"
> name="ScaExceptionHandler"/>
>     </sca:reference>
>   </sca:composite>
>   <sy:domain>
>     <sy:properties>
>       <sy:property name="org.switchyard.handlers.messageTrace.enabled"
> value="false"/>
>     </sy:properties>
>   </sy:domain>
> </sy:switchyard>
>
> customDestinationResolver.java
>
> package com.company.esb.destinationsystem.in.read;
>
> import javax.jms.JMSException;
> import javax.jms.Queue;
> import javax.jms.QueueSession;
> import javax.jms.Session;
>
> import
> org.springframework.jms.support.destination.DynamicDestinationResolver;
>
> import com.ibm.mq.jms.MQQueue;
>
>
>
>
> public class customDestinationResolver extends DynamicDestinationResolver {
> 	
> 	 private final boolean excludeRFHeaders;
>
> 	    public customDestinationResolver(boolean excludeRFHeaders) {
> 	        this.excludeRFHeaders = excludeRFHeaders;
> 	    }
>
> //	    public Destination resolveDestinationName(Session session, String
> destinationName, boolean pubSubDomain) throws JMSException {
> //	        MQDestination destination = (MQDestination)
> super.resolveDestinationName(session, destinationName, pubSubDomain);
> //	        destination.setBooleanProperty(WMQ_MQMD_WRITE_ENABLED, true);
> //	        destination.setBooleanProperty(WMQ_MQMD_READ_ENABLED, true);
> //	        destination.setIntProperty(WMQ_MQMD_MESSAGE_CONTEXT,
> WMQ_MDCTX_SET_ALL_CONTEXT);
> //	        if (excludeRFHeaders) {
> //	            destination.setTargetClient(1);
> //	        }
> //	        return destination;
> //	    }
> //	
> 	    protected Queue resolveQueue(Session session, String queueName) throws
> JMSException {
> 	        MQQueue dest = null;
> 	        if (session instanceof QueueSession) {
> 	           dest = (MQQueue)((QueueSession) session).createQueue(queueName);
> 	        }
> 	        else {
> 	            dest = (MQQueue)session.createQueue(queueName);
> 	        }
> 	        // use IBM MQ API to set properties on the Destination
> 	        dest.setMQMDWriteEnabled(true);
> 	        dest.setMQMDMessageContext(1);
>
> 	        return dest;
> 	    }
>
> }
>
>
>
> Iam gettting below exception:
>
> Caused by: java.lang.NoClassDefFoundError:
> org/springframework/jms/support/destination/DynamicDestinationResolver
> 	at java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.7.0_80]
> 	at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
> [rt.jar:1.7.0_80]
> 	at
> org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:361)
> [jboss-modules.jar:1.3.3.Final-redhat-1]
> 	at
> org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:482)
> [jboss-modules.jar:1.3.3.Final-redhat-1]
> 	... 20 more
> Caused by: java.lang.ClassNotFoundException:
> org.springframework.jms.support.destination.DynamicDestinationResolver from
> [Module "deployment.GGInRead.jar:main" from Service Module Loader]
> 	at
> org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213)
> [jboss-modules.jar:1.3.3.Final-redhat-1]
> 	at
> org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459)
> [jboss-modules.jar:1.3.3.Final-redhat-1]
> 	at
> org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408)
> [jboss-modules.jar:1.3.3.Final-redhat-1]
> 	at
> org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389)
> [jboss-modules.jar:1.3.3.Final-redhat-1]
> 	at
> org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134)
> [jboss-modules.jar:1.3.3.Final-redhat-1]
> 	... 24 more
>
>
> Can you please let me know if there is anything wrong in my code,also it
> would be great if you can  share an example.
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/Sending-MQMD-headers-from-Apache-camel-tp5795370.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>