activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Peter Chandler (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AMQ-2963) JMSBridgeConnectors does not work with IBM MQ and ActiveMQ 5.4.0
Date Wed, 22 Dec 2010 19:33:01 GMT

    [ https://issues.apache.org/jira/browse/AMQ-2963?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12974348#action_12974348
] 

Peter Chandler commented on AMQ-2963:
-------------------------------------

Help, Hit the same issue:

        <jmsBridgeConnectors> 
            <jmsQueueConnector name="LargeCompanytoActiveMQBridge" 
                               outboundQueueConnectionFactory="#remoteFactory" >
                <inboundQueueBridges>
                    <inboundQueueBridge inboundQueueName="QUEUE1" />
                </inboundQueueBridges>
            </jmsQueueConnector>
        </jmsBridgeConnectors>

    <bean id="remoteFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory"> 
        <property name="transportType" value="1"/> 
        <property name="hostName" value="HostName"/> 
        <property name="port" value="port#"/> 
        <property name="queueManager" value="queue.manager.1"/> 
        <property name="channel" value="CHANNEL1"/> 
    </bean>

When I send data to QUEUE1 on Websphere MQ I get this error in ActiveMQ.
2010-12-22 13:56:43,634 | INFO  | JMS Connector LargeCompanytoActiveMQBridge Started | org.apache.activemq.network.jms.JmsConnector
| main
// ...
2010-12-22 13:56:59,820 | ERROR | failed to forward message on attempt: 1 reason: com.ibm.msg.client.jms.DetailedInvalidDestinationException:
JMSCMQ0005: The destination name '://QUEUE1' was not valid. The destination name specified
does not conform to published destination syntax. Correct the specified destination name and
try again. message: 
  JMSMessage class: jms_text
  JMSType:          null
  JMSDeliveryMode:  2
  JMSExpiration:    0
  JMSPriority:      4
  JMSMessageID:     ID:414d512071756575652e6d616e6167657835114d06a30020
  JMSTimestamp:     1293044219816
  JMSCorrelationID: null
  JMSDestination:   <ERROR>
  JMSReplyTo:       null
  JMSRedelivered:   false
    JMSXAppID: amqsput                     
    JMSXDeliveryCount: 1
    JMSXUserID: mqm         
    JMS_IBM_Character_Set: UTF-8
    JMS_IBM_Encoding: 273
    JMS_IBM_Format: MQSTR   
    JMS_IBM_MsgType: 8
    JMS_IBM_PutApplType: 6
    JMS_IBM_PutDate: 20101222
    JMS_IBM_PutTime: 18565978
test | org.apache.activemq.network.jms.DestinationBridge | DispatchThread: 1
com.ibm.msg.client.jms.DetailedInvalidDestinationException: JMSCMQ0005: The destination name
'://QUEUE1' 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:191)
	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:551)
	at com.ibm.msg.client.wmq.internal.WMQAsyncConsumerShadow.consumer(WMQAsyncConsumerShadow.java:385)
	at com.ibm.mq.jmqi.remote.internal.RemoteAsyncConsume.driveConsumer(RemoteAsyncConsume.java:1523)
	at com.ibm.mq.jmqi.remote.internal.RemoteDispatchThread.run(RemoteDispatchThread.java:394)
	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)

> JMSBridgeConnectors does not work with IBM MQ and ActiveMQ 5.4.0
> ----------------------------------------------------------------
>
>                 Key: AMQ-2963
>                 URL: https://issues.apache.org/jira/browse/AMQ-2963
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Connector
>    Affects Versions: 5.3.0, 5.3.1, 5.3.2, 5.4.0, 5.4.1
>         Environment: Operating System - Windows XP Professional 
> Tomcat v6.0.28 
> IBM Websphere MQ v7.0.1.2 
> ActiveMQ 5.4.0
>            Reporter: Rajeev Verma
>
> 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.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message