2013-09-23 156 views
0

我正在使用IBM MQ和Java將消息寫入字節到隊列中。在這裏我遇到的問題是,當從JMS客戶端場外讀取此消息時,我期望的格式是「BytesMessage」,而不是MQSTR格式的消息。使用JMS客戶端處理MQ ByteMessage

將消息寫入隊列時必須設置哪些屬性,以便JMS客戶端將該消息作爲文本而不是Byte使用?

我需要chnage下面的任何屬性或其他?

openOptions =MQC.MQOO_OUTPUT 
putOptions=MQC.MQPMO_SYNCPOINT 

下面是示例生產者代碼,在這裏我不提及整個代碼。

String message="text"; 
final MQMessage mqm = new MQMessage(); 
mqm.write(message.getBytes()); 

問候,

Chaitu

+0

看看[這裏](http://stackoverflow.com/questions/11002772/java-convert-bytemessage-to-string),它顯示瞭如何將一個ByteMessage轉換回一個String(但完全讀取接受答案,你冒着charset問題)。 – fvu

回答

0

好吧,如果你的消息將是文本格式的唯一的,那麼什麼是寫作的字節點。

相反,你可以使用其他功能,如:

String message="text"; 
MQMessage mqm = new MQMessage(); 
mqm.writeString(message); 

此外,您還可以將您的信息的 「格式」 屬性設置爲任何有效的格式(MQRFH2,MQSTR等):

mqm.format="MQSTR"; 
+0

謝謝,如果我將消息寫入字符串並將格式設置爲MQSTR,有什麼區別。 –

+0

@chaituk我相信,當你使用寫字符串時,你將能夠在接收應用程序時使用字符串讀取消息(使用讀字符串函數)。但是,有時候一些應用程序無法處理MQRFH2格式的消息,並要求發送應用程序顯式地將MQ格式設置爲MQSTR.AL,如果您不設置任何內容,那麼默認情況下它僅被視爲MQSTR。 – nitgeek

+0

thanks.it make sesnse。 –