|  | 
 
  
    | RSS Feed - WebSphere MQ Support | RSS Feed - Message Broker Support |  
 
  
	|    |  |  
  
	| MQGET with Delphi only receive RFH? | « View previous topic :: View next topic » |  
  	| 
		
		
		  | Author | Message |  
		  | edwardkoo | 
			  
				|  Posted: Tue Jan 19, 2010 3:06 am    Post subject: MQGET with Delphi only receive RFH? |   |  |  
		  | Newbie
 
 
 Joined: 19 Jan 2010Posts: 6
 
 
 | 
			  
				| Hi, 
 I am using Delphi to create an app that retrieve message from MQ server.
 After call MQGET my app always only received a single RFH word. How do i get the complete message?
 
 Following is the Delphi code i use to call MQGET
 
 FHobj := 0;
 Options := MQOO_FAIL_IF_QUIESCING + MQOO_INPUT_AS_Q_DEF;
 ObjDesc := MQOD_DEFAULT;
 ObjDesc.ObjectName := 'TESTQ2' + #0;
 MQOPEN (FHconn, @ObjDesc, Options, @FHObj, @Compcode, @Reason );
 if CompCode <> MQCC_OK then
 ShowMessage('Open Failed' + IntToStr(Reason))
 
 BufferLength := 1024; DataLength := 0;
 MsgDesc := MQMD_DEFAULT;
 GetMsgOptions := MQGMO_DEFAULT;
 MQGET ( FHconn, FHobj, @MsgDesc, @GetMsgOptions,
 BufferLength, Buffer, @DataLength, @Compcode, @Reason);
 if CompCode <> MQCC_OK then
 ShowMessage('GET Failed' + IntToStr(Reason))
 |  |  
		  | Back to top |  |  
		  |  |  
		  | zonko | 
			  
				|  Posted: Tue Jan 19, 2010 3:26 am    Post subject: |   |  |  
		  | Voyager
 
 
 Joined: 04 Nov 2009Posts: 78
 
 
 | 
			  
				| I expect you are getting the complete msg, just not displaying it correctly. For an RFH type msg, the first 4 characters are RFH space, which will display nicely. The next characters will be x00000002, and are non-printable characters.
 So, if you are just displaying the buffer returned from MQGET, all you will see is the RFH space. You need to find another way to show the non-printable chars that follow.
 |  |  
		  | Back to top |  |  
		  |  |  
		  | edwardkoo | 
			  
				|  Posted: Tue Jan 19, 2010 10:25 pm    Post subject: |   |  |  
		  | Newbie
 
 
 Joined: 19 Jan 2010Posts: 6
 
 
 | 
			  
				| Hi zonko, 
 You're right. Received complete msg of
 
 RFH       ˜    ¸              ¸    <mcd><Msd>jms_bytes</Msd></mcd>    L<jms><Dst>queue:///TESTQ2</Dst><Tms>1263959670182</Tms><Dlv>2</Dlv></jms>  Test msg from TESTQ2
 
 
 I think i will copy data start after </jms> tag. I guess that's pretty safe unless there could be more than one occurences of </jms> tag which should not be possible right?
 
 Thanks.
 |  |  
		  | Back to top |  |  
		  |  |  
		  | fjb_saper | 
			  
				|  Posted: Wed Jan 20, 2010 11:13 am    Post subject: |   |  |  
		  |  Grand High Poobah
 
 
 Joined: 18 Nov 2003Posts: 20767
 Location: LI,NY
 
 | 
			  
				| 
   
	| edwardkoo wrote: |  
	| Hi zonko, 
 You're right. Received complete msg of
 
 RFH       ˜    ¸              ¸    <mcd><Msd>jms_bytes</Msd></mcd>    L<jms><Dst>queue:///TESTQ2</Dst><Tms>1263959670182</Tms><Dlv>2</Dlv></jms>  Test msg from TESTQ2
 
 I think i will copy data start after </jms> tag. I guess that's pretty safe unless there could be more than one occurences of </jms> tag which should not be possible right?
 
 Thanks.
 |  DON'T DO IT THIS WAY.
 a) the RFH header has a field describing it's length. As such you can read the corresponding number of bytes from the message. The rest is then the payload.
 b) Use the JNDI/URI in JMS to suppress the RFH2 header. A search of the site will give you the details...
 
 Have fun
  _________________
 MQ & Broker admin
 |  |  
		  | Back to top |  |  
		  |  |  
		  | Vitor | 
			  
				|  Posted: Wed Jan 20, 2010 11:28 am    Post subject: |   |  |  
		  |  Grand High Poobah
 
 
 Joined: 11 Nov 2005Posts: 26093
 Location: Texas, USA
 
 | 
			  
				| 
   
	| edwardkoo wrote: |  
	| I think i will copy data start after </jms> tag. I guess that's pretty safe unless there could be more than one occurences of </jms> tag which should not be possible right? |  
 Wrong. There might not be another <jms> tag, but there could easily be a <usr> tag, or any of the other tags the RFH2 can contain.
 
 Follow the suggestions of my associate and either parse the RFH2 or suppress it. Don't just chop it up.
 _________________
 Honesty is the best policy.
 Insanity is the best defence.
 |  |  
		  | Back to top |  |  
		  |  |  
		  | edwardkoo | 
			  
				|  Posted: Wed Jan 20, 2010 6:50 pm    Post subject: |   |  |  
		  | Newbie
 
 
 Joined: 19 Jan 2010Posts: 6
 
 
 | 
			  
				| Hi guys, 
 I added this param
 
 MsgDesc.Format := MQFMT_STRING;
 
 and i receive only the content message without RFH header now.
 Thanks.
 |  |  
		  | Back to top |  |  
		  |  |  
		  |  |  |  
  
	|    |  | Page 1 of 1 |  
 
 
  
  	| 
		
		  | 
 
 | You cannot post new topics in this forum You cannot reply to topics in this forum
 You cannot edit your posts in this forum
 You cannot delete your posts in this forum
 You cannot vote in polls in this forum
 
 |  |  |  |