posts - 42,comments - 83,trackbacks - 0
                  今天同事問我說,如何處理RECEIVE、VISIBLE的JMS消息?有點懵,之前從沒有關(guān)注過消息的狀態(tài)。Weblogic81中,我們是不能看到destination中的消息的,只能看到當(dāng)前destination中,有多少message, 有多少pending的message。而92中,我們監(jiān)控destination的時候,可以看到具體的message,而且message后面會跟一個state string。標(biāo)題中說的RECEIVE、VISIBLE就是這個state string,其實state有很多,常見的也就是RECEIVE、VISIBLE。下面我們看看所有這些STATE在代碼(MessageInfo.java)中的解釋,

          VISIBLE:Indicates that the message is visible on the destination.消息已經(jīng)入列,等待被消費。

          ORDERED:Indicates that the message belongs to a Unit of Order. 消息處于某個unit中。

          DELAYED:Indicates that the message exists on the destination but is classified as pending because it has a scheduled delivery time or is delayed. 消息已經(jīng)入列,但因為TimeToDeliver還沒有到,直到TimeToDeliver,該消息才會變成VISIBLE?;蛘哂捎诳蛻舳讼M異常,比如onMessage中出現(xiàn)了RuntimeException,消息被recover后,等待Redelivery Delay時間到達,然后重新發(fā)送。

          RECEIVE:Indicates that the message exists on the destination but is classified as pending because it has been received but not acknowledged. The actual state may also include STATE_TRANSACTION if the receive operation was performed as part of a transaction.消息已經(jīng)入列,且已經(jīng)被DELIVER到某個CONSUMER,但CONSUMER的ACKNOWLEDGE還沒有收到。可能是網(wǎng)絡(luò)問題或客戶端設(shè)為CLIENT_ACK模式。

          SEND:Indicates that the message exists on the destination but is classified as pending because it is part of a send operation that is in progress. The actual state may also include STATE_TRANSACTION if the send operation was perfromed as part of a transaction.消息已經(jīng)入列,但目前send操作正在處理中(比如事務(wù)未提交),該消息對于consumer是不可用的。

          TRANSACTION:Indicates that the message exists on the destination but is classified as pending because it is part of a send or receive operation that is being performed as part of a global transaction.

          PAUSED:Indicates that the message exists on the destination but is being held in a pending state because of a pause operation. 消息因為PAUSE被PENDING在DEST中。

          REDELIVERY_COUNT_EXCEEDED:Indicates that the message has exceeded the redelivery count set for the destination and is no longer available for consumption. 消息反復(fù)REDELIVERY的上限已經(jīng)到達,這樣的消息不會被重發(fā)。

                  根據(jù)消息的狀態(tài),我們基本可以斷定JMS消息相關(guān)問題的位置,從而調(diào)查可以做到有的放矢。




          posted on 2009-05-21 15:27 走走停停又三年 閱讀(1654) 評論(0)  編輯  收藏 所屬分類: Weblogic
          主站蜘蛛池模板: 霍林郭勒市| 栖霞市| 曲沃县| 托克逊县| 弥渡县| 长兴县| 祁连县| 三河市| 桃园县| 徐汇区| 三台县| 凤翔县| 通道| 马公市| 乡宁县| 句容市| 丹阳市| 岳池县| 米易县| 广东省| 施甸县| 乳山市| 敖汉旗| 阜南县| 昔阳县| 屏山县| 平湖市| 涞源县| 新乡县| 邯郸县| 增城市| 福海县| 绥芬河市| 凌云县| 民县| 辰溪县| 巩留县| 济阳县| 诏安县| 张家界市| 康马县|