weblogic jms訊息狀態message

2006M8017070051發表於2009-05-22
今天同事問我說,如何處理RECEIVE、VISIBLE的JMS訊息?有點懵,之前從沒有關注過訊息的狀態。Weblogic81中,我們是不能看到destination中的訊息的,只能看到當前destination中,有多少message, 有多少pending的message。而92中,我們監控destination的時候,可以看到具體的message,而且message後面會跟一個state string。標題中說的RECEIVE、VISIBLE就是這個state string,其實state有很多,常見的也就是RECEIVE、VISIBLE。下面我們看看所有這些STATE在程式碼(MessageInfo.java)中的解釋,

VISIBLE:Indicates that the message is visible on the destination.訊息已經入列,等待被消費。

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. 訊息已經入列,但因為TimeToDeliver還沒有到,直到TimeToDeliver,該訊息才會變成VISIBLE。

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.訊息已經入列,且已經被DELIVER到某個CONSUMER,但CONSUMER的ACKNOWLEDGE還沒有收到。可能是網路問題或客戶端設為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.訊息已經入列,且正在被DELIVER到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. 訊息反覆REDELIVERY的上限已經到達,這樣的訊息不會被重發。

根據訊息的狀態,我們基本可以斷定JMS訊息相關問題的位置,從而調查可以做到有的放矢。[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21645448/viewspace-1022396/,如需轉載,請註明出處,否則將追究法律責任。

相關文章