activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From <Rajeev.Ve...@wellsfargo.com>
Subject JMSBridgeConnectors does not work with IBM MQ and ActiveMQ 5.4.0
Date Thu, 14 Oct 2010 17:49:21 GMT
Hi,

We are trying to create a bridge with IBM Websphere Queue and ActiveMQ queue. We have defined
a broker in activemq.xml with following jmsBridgeConnectors information:

<jmsBridgeConnectors>
<jmsQueueConnector
outboundQueueConnectionFactory="#remoteFactory">
<inboundQueueBridges>
<inboundQueueBridge inboundQueueName="IBM.TO.ACTIVEMQ" localQueueName="IBM.TO.ACTIVEMQ"/>
</inboundQueueBridges>
</jmsQueueConnector>
</jmsBridgeConnectors>
We are getting below error with activemq 5.4.0 and it works fine with version 5.2.0:
com.ibm.msg.client.jms.DetailedInvalidDestinationException: JMSCMQ0005: The destination name
'://IBM.TO.ACTIVEMQ' was not valid. The destination name specified does not conform to published
destination syntax. Correct the specified destination name and try again.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.ibm.msg.client.commonservices.j2se.NLSServices.createException(NLSServices.java:313)
at com.ibm.msg.client.commonservices.nls.NLSServices.createException(NLSServices.java:388)
at com.ibm.msg.client.wmq.common.internal.WMQDestinationURIParser.setUri(WMQDestinationURIParser.java:524)
at com.ibm.msg.client.wmq.common.internal.WMQDestination.<init>(WMQDestination.java:3148)
at com.ibm.msg.client.wmq.common.internal.WMQDestination.<init>(WMQDestination.java:3104)
at com.ibm.msg.client.wmq.factories.WMQFactoryFactory.createProviderDestination(WMQFactoryFactory.java:444)
at com.ibm.msg.client.jms.admin.JmsDestinationImpl.setProviderDestination(JmsDestinationImpl.java:333)
at com.ibm.msg.client.jms.admin.JmsDestinationImpl.initialise(JmsDestinationImpl.java:231)
at com.ibm.msg.client.jms.admin.JmsDestinationImpl.<init>(JmsDestinationImpl.java:196)
at com.ibm.msg.client.jms.admin.JmsJndiDestinationImpl.<init>(JmsJndiDestinationImpl.java:129)
at com.ibm.mq.jms.MQDestination.<init>(MQDestination.java:186)
at com.ibm.msg.client.wmq.factories.admin.WMQJmsFactory.createDestination(WMQJmsFactory.java:125)
at com.ibm.msg.client.jms.internal.JmsMessageImpl.providerDestToJmsDest(JmsMessageImpl.java:2111)
at com.ibm.msg.client.jms.internal.JmsMessageImpl.getJMSDestination(JmsMessageImpl.java:686)
at com.ibm.jms.JMSMessage.getJMSDestination(JMSMessage.java:605)
at org.apache.activemq.ActiveMQMessageTransformation.copyProperties(ActiveMQMessageTransformation.java:206)
at org.apache.activemq.ActiveMQMessageTransformation.transformMessage(ActiveMQMessageTransformation.java:188)
at org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1720)
at org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:231)
at org.apache.activemq.ActiveMQMessageProducerSupport.send(ActiveMQMessageProducerSupport.java:300)
at org.apache.activemq.ActiveMQQueueSender.send(ActiveMQQueueSender.java:111)
at org.apache.activemq.network.jms.QueueBridge.sendMessage(QueueBridge.java:80)
at org.apache.activemq.network.jms.DestinationBridge.onMessage(DestinationBridge.java:129)
at com.ibm.mq.jms.MQMessageConsumer$FacadeMessageListener.onMessage(MQMessageConsumer.java:399)
at com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl$JmsProviderMessageListener.onMessage(JmsMessageConsumerImpl.java:904)
at com.ibm.msg.client.wmq.internal.WMQAsyncConsumerShadow.honourNoLocal(WMQAsyncConsumerShadow.java:550)
at com.ibm.msg.client.wmq.internal.WMQAsyncConsumerShadow.consumer(WMQAsyncConsumerShadow.java:384)
at com.ibm.mq.jmqi.remote.internal.RemoteAsyncConsume.driveConsumer(RemoteAsyncConsume.java:1478)
at com.ibm.mq.jmqi.remote.internal.RemoteDispatchThread.run(RemoteDispatchThread.java:385)
at com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.runTask(WorkQueueItem.java:209)
at com.ibm.msg.client.commonservices.workqueue.SimpleWorkQueueItem.runItem(SimpleWorkQueueItem.java:100)
at com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.run(WorkQueueItem.java:224)
at com.ibm.msg.client.commonservices.workqueue.WorkQueueManager.runWorkQueueItem(WorkQueueManager.java:298)
at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManagerImplementation$ThreadPoolWorker.run(WorkQueueManagerImplementation.java:1220)
I looked at the code for class ActiveMQsession has a method send which was modified after
v 5.2.0 and below lines of code were moved before transforming the IBM JMS Message to Active
MQ message:
message.setJMSDestination(destination);
message.setJMSDeliveryMode(deliveryMode);
long expiration = 0L;
if (!producer.getDisableMessageTimestamp()) {
long timeStamp = System.currentTimeMillis();
message.setJMSTimestamp(timeStamp);
if (timeToLive > 0) { expiration = timeToLive + timeStamp; }
}
message.setJMSExpiration(expiration);
message.setJMSPriority(priority);
message.setJMSRedelivered(false);
Now code sets the ActiveMQDestination as the JMS destination to IBM Message before transformation
and we are getting above error when JMS properties are getting copied from IBM Message to
ActiveMQMessage inside ActiveMQMessageTransformation.
Am I missing something? Is there a workaround to this?
Many thanks for the response.

Best Regards,
Rajeev Verma


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message