| Author | 
		  Message
		 | 
		
		  | wildtiger | 
		  
		    
			  
				 Posted: Mon May 06, 2002 8:10 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Acolyte
 
 Joined: 21 Apr 2002 Posts: 55 Location: Canada 
  | 
		  
		    
			  
				Hi,
 
 
I'm going to set PutMessageOptions and GetMessageOptions before send / receive message from MQ queue. How can I set them in MQ-JMS application? I cannot find a way in MQ-JMS classes.
 
 
By the way, I'm going to send a big file via MQ queue. So I have to send a group of messages. What's the normal way to group messages? The following is what I understood about it:
 
 
Sender:
 
 
Open file
 
read the first part of the file, and assign to a TextMessage object
 
specify the PutMessageOption ( MQPMO_LOGICAL_ORDER )
 
while ( not end-of-file )
 
{
 
   send the message ( with MQMF_MSG_IN_GROUP or MQMF_LAST_MSG_IN_GROUP (if it is the last message) )
 
   read the next part of the file, and assign to the TextMessage object
 
}
 
close file
 
 
Receiver:
 
 
Open a file for writing
 
Set GetMessageOptions to MQGMO_LOGICAL_ORDER
 
Read the first message of the group from the queue
 
while ( not MQMF_LAST_MSG_IN_GROUP )
 
{
 
   write the message to the file
 
   read the next message of the group from the queue
 
}
 
close file
 
 
The questions are:
 
  1) How can I know which message is the first message of the group? Do I have to browse firstly? Is the first message with the MQMF_MSG_IN_GROUP is the frist message in the group?
 
  2) Do I have to remember the GroupID when I get the first message?
 
 
Thanks in advance
 
 
 
 
 | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | sanjays30 | 
		  
		    
			  
				 Posted: Mon May 06, 2002 2:18 pm    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Novice
 
 Joined: 05 May 2002 Posts: 18 Location: USA 
  | 
		  
		    
			  
				JMS API is quite different than MQI, You can solve this in number of more Object Oriented and elegent ways.
 
You can define Custom header, and use message selector to read in a sequence, use a ByteMessage type of JMS Message.
 
 
For Browsing There is separate JMS class javax.jms.QueueBrowser, It does not work in the way MQI work by just specifing Option(and confusing the programmer)
 
 | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | wildtiger | 
		  
		    
			  
				 Posted: Mon May 06, 2002 4:37 pm    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Acolyte
 
 Joined: 21 Apr 2002 Posts: 55 Location: Canada 
  | 
		  
		    
			  
				Thank you very much for your information.
 
 
Do u mean that I cannot use the grouping feature of MQ via JMS way? So I have to develop other ways dealing with the grouping messages? | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | sanjays30 | 
		  
		    
			  
				 Posted: Tue May 14, 2002 10:47 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Novice
 
 Joined: 05 May 2002 Posts: 18 Location: USA 
  | 
		  
		    
			  
				| I believe so, The Custom Property and Message Selectors are really easy and COOL! There are many MQ features not exposed through JMS, but there are a lot others which are not there in MQI. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | amurugan | 
		  
		    
			  
				 Posted: Tue May 14, 2002 9:56 pm    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Voyager
 
 Joined: 10 Sep 2001 Posts: 75 Location: india 
  | 
		  
		    
			  
				hi wild tiger , 
 
 You can use the grouping of messages in mqseries jms . chec out the  JMSXGroupID  and JMSXGroupSeq  field in the message header . They are used  for sending the messages in groups. I am sure you can achieve  group thru this. let me know whether does it help u 
 
 
 
cheers,
 
Murugan | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | sanjays30 | 
		  
		    
			  
				 Posted: Wed May 15, 2002 11:44 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Novice
 
 Joined: 05 May 2002 Posts: 18 Location: USA 
  | 
		  
		    
			  
				| where did you find these properties, i did not find them in javax.jms.Message or any Message subclass | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | amurugan | 
		  
		    
			  
				 Posted: Wed May 15, 2002 6:02 pm    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Voyager
 
 Joined: 10 Sep 2001 Posts: 75 Location: india 
  | 
		  
		    
			  
				hi sanjay , 
 
you can find them in the mqseries for java doc in mapping between jms fields and mqmd fields. All the fields which you can manipulate in mq base java  are available as eitherr vendor specific which are refixed by JMS_IBM or as part of the standard header like the groups id and  grup seq . let me know  whether can you find them or i will send u the doc 
 
 
cheers,
 
Murugan | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | amurugan | 
		  
		    
			  
				 Posted: Wed May 15, 2002 6:02 pm    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Voyager
 
 Joined: 10 Sep 2001 Posts: 75 Location: india 
  | 
		  
		    
			  
				hi sanjay , 
 
you can find them in the mqseries for java doc in mapping between jms fields and mqmd fields. All the fields which you can manipulate in mq base java  are available as eitherr vendor specific which are refixed by JMS_IBM or as part of the standard header like the groups id and  grup seq . let me know  whether can you find them or i will send u the doc 
 
 
cheers,
 
Murugan | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | techno | 
		  
		    
			  
				 Posted: Fri Apr 02, 2004 9:08 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Chevalier
 
 Joined: 22 Jan 2003 Posts: 429
  
  | 
		  
		    
			  
				This is a general question...
 
 
I have seen mapping of different fields in the header. I do not see any way to manipulate most of the fields through API? Is there any other way to do that? For example, If I want the COA and COD in JMS, though I could find the mapping, I could not find the way to say ' Report Required'.
 
 
Thanks for any help. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | techno | 
		  
		    
			  
				 Posted: Fri Apr 02, 2004 1:49 pm    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Chevalier
 
 Joined: 22 Jan 2003 Posts: 429
  
  | 
		  
		    
			  
				Is this the way I can do? 
 
 
msg.setIntProperty("JMS_IBM_Report_COA", MQC.MQRO_COA); 
 
msg.setIntProperty("JMS_IBM_Report_COD", MQC.MQRO_COD); 
 
 
But MQC.MQRO_COA and MQC.MQRO_COD are of Base MQ! 
 
 
 
I did above. Request-Sent_side received COA, but COD. Any Help pls?
 
 
 
Also, my application listener (onMessage())has trouble receiving that message... May be because that is not a regular message. It is not  even able to receive it. Any one of you had this problem before? 
 
(Report Message comes from mainframe to hp-ux)
 
 
Thanks
  Last edited by techno on Fri Apr 02, 2004 2:22 pm; edited 1 time in total | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | techno | 
		  
		    
			  
				 Posted: Fri Apr 02, 2004 2:18 pm    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Chevalier
 
 Joined: 22 Jan 2003 Posts: 429
  
  | 
		  
		    
			  
				Here is the Report Message
 
 
 MQGET of message number 2
 
****Message descriptor****
 
 
  StrucId  : 'MD  '  Version : 2
 
  Report   : 0  MsgType : 4
 
  Expiry   : -1  Feedback : 259
 
  Encoding : 273  CodedCharSetId : 819
 
  Format : 'MQHRF2  '
 
  Priority : 4  Persistence : 1
 
  MsgId : X'C3E2D840D4D8C4F24040404040404040BB0265826431F802'
 
  CorrelId : X'414D512044484F434C4D322020202020406DDBA220000306'
 
  BackoutCount : 0
 
  ReplyToQ       : '                                                '
 
  ReplyToQMgr    : 'QMGR                                            '
 
  ** Identity Context
 
  UserIdentifier : 'oracle      '
 
  AccountingToken :
 
   X'0331303100000000000000000000000000000000000000000000000000000006'
 
  ApplIdentityData : '                                '
 
  ** Origin Context
 
  PutApplType    : '7'
 
  PutApplName    : 'QMGR                        '
 
  PutDate  : '20040402'    PutTime  : '14043796'
 
  ApplOriginData : '    '
 
 
  GroupId : X'000000000000000000000000000000000000000000000000'
 
  MsgSeqNumber   : '1'
 
  Offset         : '0'
 
  MsgFlags       : '0'
 
  OriginalLength : '-1'
 
 
****   Message      ****
 
 
 length - 100 bytes
 
 
00000000:  5246 4820 0000 0002 0000 0120 0000 0111 'RFH ....... ....'
 
00000010:  0000 04B8 2020 2020 2020 2020 0000 0000 '....        ....'
 
00000020:  0000 04B8 0000 0020 3C6D 6364 3E3C 4D73 '....... <mcd><Ms'
 
00000030:  643E 6A6D 735F 6F62 6A65 6374 3C2F 4D73 'd>jms_object</Ms'
 
00000040:  643E 3C2F 6D63 643E 0000 007C 3C6A 6D73 'd></mcd>...|<jms'
 
00000050:  3E3C 4473 743E 7175 6575 653A 2F2F 2F43 '><Dst>queue:///C'
 
00000060:  4C4D 2E45                               'LM.E            '
 
 
And this is the error:
 
2004.04.02 14:12:00 MQJMS1016E an internal error has occurred. Please contact yo
 
ur system administrator. Detail: java.lang.NullPointerException | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | bower5932 | 
		  
		    
			  
				 Posted: Sat Apr 03, 2004 6:00 pm    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Jedi Knight
 
 Joined: 27 Aug 2001 Posts: 3023 Location: Dallas, TX, USA 
  | 
		  
		    
			  
				| I thought that there was a NullPointerException in CSD4 that was fixed in CSD5.  What version of MQ are you running?  You can get it with mqver. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | techno | 
		  
		    
			  
				 Posted: Mon Apr 05, 2004 12:29 pm    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Chevalier
 
 Joined: 22 Jan 2003 Posts: 429
  
  | 
		  
		    
			  
				$ mqver                           
 
Name:        WebSphere MQ         
 
Version:     530.5  CSD05         
 
CMVC level:  p530-05-L030926      
 
BuildType:   IKAP - (Production)  
 
$                                 
 
 
It is CSD05!
 
 
Code:
 
 
   
	| Code: | 
   
  
	msg.setJMSReplyTo(qQueueSender);
 
msg.setIntProperty("JMS_IBM_Report_COA", MQC.MQRO_COA_WITH_DATA);
 
msg.setIntProperty("JMS_IBM_Report_COD", MQC.MQRO_COD);
 
msg.setIntProperty("JMS_IBM_MsgType", MQMT_REQUEST); | 
   
 
 
Thanks | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | techno | 
		  
		    
			  
				 Posted: Thu Apr 08, 2004 7:54 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Chevalier
 
 Joined: 22 Jan 2003 Posts: 429
  
  | 
		  
		    
			  
				Also: I am getting COA, but COD. Could you throw some hints ?
 
 
Thanks | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | 
		    
		   |