| Author | 
		  Message
		 | 
		
		  | robiijohn | 
		  
		    
			  
				 Posted: Wed Aug 13, 2008 3:46 am    Post subject: Reading JMSReply to Queue | 
				     | 
			   
			 
		   | 
		
		
		   Newbie
 
 Joined: 13 Aug 2008 Posts: 7
  
  | 
		  
		    
			  
				Hi All,
 
 
I am facing one problem in assigning ReplytoQueue value for the MQ Message.
 
 
I am using MDB Listener For receiving the message..
 
I just wanted to read the JMSReplyTo and put it into the replytoQueue field of the MQ message...
 
Currently i am doing 
 
mqMsg.replyToQueueName = jmsMsg.getJMSReplyTo().toString();
 
 
But the problem is   jmsMsg.getJMSReplyTo().toString()  is giving me 
 
something like this  "queue:\\\QueueName"
 
i dont know why it is prefixing with "queue:\\\" | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | fjb_saper | 
		  
		    
			  
				 Posted: Wed Aug 13, 2008 3:56 am    Post subject: Re: Reading JMSReply to Queue | 
				     | 
			   
			 
		   | 
		
		
		    Grand High Poobah
 
 Joined: 18 Nov 2003 Posts: 20768 Location: LI,NY 
  | 
		  
		    
			  
				
   
	| robiijohn wrote: | 
   
  
	Hi All,
 
 
I am facing one problem in assigning ReplytoQueue value for the MQ Message.
 
 
I am using MDB Listener For receiving the message..
 
I just wanted to read the JMSReplyTo and put it into the replytoQueue field of the MQ message...
 
Currently i am doing 
 
mqMsg.replyToQueueName = jmsMsg.getJMSReplyTo().toString();
 
 
But the problem is   jmsMsg.getJMSReplyTo().toString()  is giving me 
 
something like this  "queue:\\\QueueName"
 
i dont know why it is prefixing with "queue:\\\" | 
   
 
 
Your code should be:
 
Destination replyto = jmsMsg.getJMSReplyTo();
 
and then you should use something like
 
sender.send(jmsMsg, replyto);
 
 
It looks like you  are mixing JMS and regular MQ.
 
You should avoid doing that. If it cannot be avoided you should look at  following piece of code:
 
Destination myreplyto = jmsMsg.getJMSReplyTo();
 
If (myreplyto instanceof Queue) {
 
  MQQueue myqueue = (MQQueue)Destination;
 
  String RTqmgr = myqueue.getBaseQmgr();
 
  String RTq       = myqueue.getBaseQueue();
 
}
 
 
Or something like it.  Watch the String declarations, they should have been done way before...  
 
The Destination gives you the URI form : "queue://qmgr/qname?att1=val1&attn=valn"
 
 
Enjoy   _________________ MQ & Broker admin | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | robiijohn | 
		  
		    
			  
				 Posted: Wed Aug 13, 2008 4:45 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Newbie
 
 Joined: 13 Aug 2008 Posts: 7
  
  | 
		  
		    
			  
				Thanks for your reply.....   
 
 
But now i am getting the type conversion error
 
com.ibm.mq.jms.MQQueue incompatible with com.ibm.mq.MQQueue, Status : Red
 
 
Can you please suggest ....
 
i am putting the  portion of my code below:
 
 
q_Mgr 						 = new MQQueueManager(props.getProperty("QUEUE_MANAGER").trim());
 
			queue 						 = q_Mgr.accessQueue(queueName, MQC.MQOO_OUTPUT);
 
			//byte[] bytMessageID 		 = msg.getJMSMessageID().getBytes();
 
			mqMsg.correlationId  		 =  msg.getJMSMessageID().getBytes("UTF8"); //bytMessageID 8859_1;
 
			mqMsg.report 				 = MQC.MQRO_PASS_CORREL_ID;
 
			mqMsg.replyToQueueManagerName= props.getProperty("QUEUE_MANAGER").trim();
 
			Destination replyTo=msg.getJMSReplyTo();
 
			MQQueue myqueue = (MQQueue)replyTo; 
 
			String RTq = myqueue.name; 
 
			mqMsg.replyToQueueName=RTq;
 
			//mqMsg.replyToQueueName 		 = "UIST.ONL.RS.SVRG1.BW.EWSS.QM_IPBZ3";//msg.getJMSReplyTo().toString();
 
			logWriter.log(Level.SEVERE,"Reply to queue : " + msg.getJMSReplyTo());
 
			
 
			mqMsg.messageType 			 = MQC.MQMT_REQUEST;
 
			//mqMsg.writeUTF(MQC.MQFMT_STRING);
 
			mqMsg.characterSet			 = 1208;
 
			
 
			mqMsg.writeString(txtMsg.getText().toString());
 
			queue.put(mqMsg);
 
			q_Mgr.commit();
 
			queue.close(); | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | manicminer | 
		  
		    
			  
				 Posted: Wed Aug 13, 2008 5:20 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Disciple
 
 Joined: 11 Jul 2007 Posts: 177
  
  | 
		  
		    
			  
				
   
	| robiijohn wrote: | 
   
  
	Thanks for your reply.....   
 
 
But now i am getting the type conversion error
 
com.ibm.mq.jms.MQQueue incompatible with com.ibm.mq.MQQueue, Status : Red
 
 | 
   
 
 
 
Don't mix and match objects, you com.ibm.mq.MQQueue and com.ibm.mq.jms.MQQueue are 2 different objects, don't try and use one with the other, you probably have an incorrect import in your code. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | fjb_saper | 
		  
		    
			  
				 Posted: Wed Aug 13, 2008 2:40 pm    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Grand High Poobah
 
 Joined: 18 Nov 2003 Posts: 20768 Location: LI,NY 
  | 
		  
		    
			  
				
   
	| robiijohn wrote: | 
   
  
	Thanks for your reply.....   
 
 
But now i am getting the type conversion error
 
com.ibm.mq.jms.MQQueue incompatible with com.ibm.mq.MQQueue, Status : Red
 
 | 
   
 
 
That's one error you were meant to get.
 
The snippet I wrote was geared towards JMS so you would have to use com.ibm.mq.jms.MQQueue to extract the information (replyto qmgr, replyto queue) and set it to a com.ibm.mq.MQQueue that you would want to open...
 
 
Like I said mix and match at your own risks. I would just stay with JMS, but then that's just me....
 
 
Also look at your code.... despite being told that the correlID is a byte[24] field you are treating it as a text field! (ccsid conversion??)   This is so wrong on so many levels...    Not all values of a byte map to a char...     
 
Look up the anonymous indentifier pattern with Google.
 
A perfect implementation would be a best of breed request/reply with MQ.
 
See the examples in base and JMS (sample code at top of page link).
 
 
 
Also if you need the message body in a particular CCSID set this CCSID on the QCF and do a receive of a TextMessage....(JMS).
 
 
Enjoy   _________________ MQ & Broker admin | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | robiijohn | 
		  
		    
			  
				 Posted: Wed Aug 13, 2008 6:12 pm    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Newbie
 
 Joined: 13 Aug 2008 Posts: 7
  
  | 
		  
		    
			  
				Hi , Thanks for your reply....   
 
 
i wantedto put the message id of the incoming message into the correlationId field of the mq message. as you know i am getting the incoming message as jms.... so how can i solve this problem any advice please... | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | fjb_saper | 
		  
		    
			  
				 Posted: Thu Aug 14, 2008 1:30 pm    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Grand High Poobah
 
 Joined: 18 Nov 2003 Posts: 20768 Location: LI,NY 
  | 
		  
		    
			  
				
   
	| robiijohn wrote: | 
   
  
	Hi , Thanks for your reply....   
 
 
i wantedto put the message id of the incoming message into the correlationId field of the mq message. as you know i am getting the incoming message as jms.... so how can i solve this problem any advice please... | 
   
 
 
 
This is going to be sooo easy. Be creative.
 
retrieve the message id , set the correlation id, retrieve the correlID as bytes.
 
Set the bytes:
 
 
JMS part
 
msgID = inmsg.getJMSMessageID();
 
dummymsg.setJMSCorrelationID() = msgID;
 
byte[24] mqmsgid = dummymsg.getCorrelationIDAsBytes();
 
 
Now you can use the bytearray to set the correlID on the mq message...
 
 
However you should:
 
- first check the JMSCorrelationID for "ID:" + String.replicate("0",48 );
 
(initial value or something like JMSC.MQID_NONE or MQSC.MQID_NONE...
 
 - If this is the value go ahead and move the msgid to the correlId
 
 - if the correlID has already a non initial value, it should be "passthrough"
  
 
 
Enjoy   _________________ MQ & Broker admin | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | 
		    
		   |