Hi If you look at the latest commits today from James Strachan I think he add to Camel 2.0 a solution to your problem. See his comment on CAMEL-505 http://issues.apache.org/activemq/browse/CAMEL-505
/Claus Ibsen Apache Camel Committer Blog: http://davsclaus.blogspot.com/ On Sun, Dec 7, 2008 at 11:20 AM, Tomasz Domzal <[EMAIL PROTECTED]> wrote: > > I had exactly same problem few months ago and came up with quick and dirty > solution. > By default all attributes on Camel JMS URI (ex. targetClient for Websphare > MQ) are are passed to camel JmsComponent object. Such behavior is not what > we want in case of additional destination attributes (like MS MQ > 'targetClient'). But in JmsComponent object there is method: > > protected String convertPathToActualDestination(String path, Map > parameters) > > which overloaded can modify this behavior. There is extended JmsComponent > code. Please find more description in supplied javadoc snippet: > > // ------------------- > > /** > * JMSComponent with modification that allows setting attributes on JMS > destination object.<br/> > * Attributes enumerated in 'destinationArgs' attribute will be set as > attributes on destination URI instead on underlying [EMAIL PROTECTED] > JmsComponent} > object. > * For example setting 'targetClient' attribute on Webshere MQ in Camel JMS > endpoint URI should look like: > * > <pre>jmsMqComp:queue:queue://queue_name?destinationArgs=targetClient&targetClient=1</pre> > * where jmsMqComp is bean id of [EMAIL PROTECTED] > JmsComponentWithDestinationAttributes} instance.<br/> > * (Please note URI attribute setting method on Websphere MQ works only with > URI queue format - thats the reason > * there is keyword 'queue' is used twice in this example - first is from > Camel URI format, second starts WS MQ queue URI) > */ > public class JmsComponentWithDestinationAttributes extends JmsComponent { > > private Log log = > LogFactory.getLog(JmsComponentWithDestinationAttributes.class); > > @Override > protected String convertPathToActualDestination(String path, Map > parameters) { > if (log.isDebugEnabled()) > log.debug("resolve: [path: "+path+"][parameters: "+parameters+"]"); > String subject = super.convertPathToActualDestination(path, parameters); > // attributes enumerated in 'destinationArgs' are removed from map and > appended as destination options > if (parameters.containsKey("destinationArgs")) { > StringBuffer subjectBuf = new StringBuffer(subject); > boolean subjectHasOptions = (subject.indexOf('?')!=-1); > String destinationArgs = (String) > parameters.remove("destinationArgs"); > String[] args = destinationArgs.split(","); > for (String arg : args) { > if (subjectHasOptions) { > subjectBuf.append("&"); > } else { > subjectBuf.append("?"); > subjectHasOptions = true; > } > subjectBuf.append(arg); > subjectBuf.append('='); > subjectBuf.append((String) parameters.remove(arg)); > } > subject = subjectBuf.toString(); > } > if (log.isDebugEnabled()) > log.debug("resolved [path: "+subject+"][parameters: "+parameters+"]"); > return subject; > } > } > > // ------------------- > > and assuming Spring bean configuration: > > <bean id="jmsMqComp" > class="com.somecompany.JmsComponentWithDestinationAttributes"> > <property name="connectionFactory"> > <bean class="com.ibm.mq.jms.MQQueueConnectionFactory"> > <property name="transportType"> > <util:constant > static-field="com.ibm.mq.jms.JMSC.MQJMS_TP_CLIENT_MQ_TCPIP"/> > </property> > <property name="hostName" value="mq_host"/> > <property name="port" value="mq_port" /> > <property name="queueManager" value="mq_qmanager"/> > <property name="channel" value="mq_channel"/> > </bean> > </property> > </bean> > > JMS URI in Camel: > > > jmsMqComp:queue:queue://queue_name?destinationArgs=targetClient&targetClient=1 > > will set targetClient=1 option on WS MQ destination. > > It's definitely not best solution. ActiveMQ has dedicated component in Camel > which accepts many AMQ dedicated options. Maybe this is way to go for > Websphere MQ also ? > -- > View this message in context: > http://www.nabble.com/Camel-to-Websphere-MQ-communication-tp20834360s22882p20879636.html > Sent from the Camel - Users mailing list archive at Nabble.com. > >
