Java對象我有兩個問題:取從MQ隊列
我想知道是否有任何可用的工具來獲取一個Java對象投進MQ。如果可以,請提供代碼片段以從mqqueue獲取Java對象消息。
是否可以不從隊列中刪除消息,而是讀取最新的消息。就像運行代碼時它應該讀取隊列中最新的消息。
請讓我知道是否有困難瞭解上述查詢。
Java對象我有兩個問題:取從MQ隊列
我想知道是否有任何可用的工具來獲取一個Java對象投進MQ。如果可以,請提供代碼片段以從mqqueue獲取Java對象消息。
是否可以不從隊列中刪除消息,而是讀取最新的消息。就像運行代碼時它應該讀取隊列中最新的消息。
請讓我知道是否有困難瞭解上述查詢。
關於你提到的第二個查詢:
是的,我們可以看到在隊列中的最新消息而不從隊列中刪除。我們稱之爲瀏覽消息。
你將不得不使用一些消息得到選項,如MQGMO_BROWSE_FIRST
。在與GMO發佈MQGET MQGMO_BROWSE_FIRST之後,我們需要向GMO發佈MQGET,MQGMO_BROWSE_NEXT。我們將不得不循環發佈這些MQGET,直到我們到達最後一條消息。
一切都清楚了說明: http://publib.boulder.ibm.com/infocenter/wmqv7/v7r1/index.jsp?topic=%2Fcom.ibm.mq.doc%2Ffr12610_.htm
其實,它本來就簡單得多了,如果MQ API可以提供類似MQGMO_BROWSE_LAST。 但仍然沒問題,畢竟我們稱之爲隊列(FIFO),而不是堆棧(LIFO)。
關於你的第一個查詢:
我從中明白的是,你要放在一個Java類對象在隊列中。那麼,正如我所評論的那樣,我們只將消息放入隊列中。無論您是將文本消息還是二進制消息,MQ都足夠靈活,可以同時接受這兩種消息。現在,它取決於應用程序如何處理消息中的二進制或文本信息。
所以,這是真的在你的實施。我想如下實現它:
發送方: 假設我們有一個對象ObjToBeSent,其作爲變量的狀態:
ObjToBeSent.Vara=1;
ObjToBeSent.Varb="test";
我將形成一個XML消息像下面,將發佈在隊列:
<ObjToBeSent>
<Vara><Integer>1</Integer></Vara>
<Varb><String>test</String></varb>
</ObjToBeSent>
接收方: 從隊列中獲取消息。解析XML並獲取變量的值以及數據類型。
聲明一個對象say,ObjectReceived,並設置輸入消息中變量的值。
感謝您關注此事。建議第二個查詢工作。關於第一個查詢,消息被寫爲序列化的java對象,我們需要反序列化並將其作爲字符串讀取。你可以請建議任何java jms api或ibm mq api。還可以通過代碼片段執行上述操作 – user2817011
第二個查詢很清楚,但第一個查詢不是。通過在隊列中放置「java對象」是什麼意思?你在談論什麼java對象?我們只在隊列中放置消息,可以是任何形式的文本或二進制文件。 – nitgeek