message-driven-bean裏的queue

總算找到了一個利用Message-Driven-Bean(MDB)建queue的方法。

一般來說,在ejb-jar.xml和 jboss.xml 裏定義好MDB後,Jboss在擴展EJB包的時候會創建相應的Queue。但目前我需要的不只是一個普通的queue,而是要讓message保留的queue,也就說並非first come, first out,而是人工手動對queue裏的message進行刪除,重發等操作。

那麼怎樣才能讓message bean對messages拒收呢?

在*bean.class裏onMessage(Message  msg) 是必不可少的,就算是個空block,也會照常接收queue裏的message,只是不做任何處理罷了,畢竟MDB是一個特殊的message listner 和receiver。

所以在程序裏是無法對message的接收進行控制的,也只能在配置文件裏動手腳了。

最後終於發現了這麼一個參數,<message-selector>, 這個是作爲message 的filter 來使用的,這樣MDB只會接收滿足條件的message。

在我的實例裏使用瞭如下語句: 

<message-selector><![CDATA[ JMS_JBOSS_REDELIVERY_DELAY < 0 ]]></message-selector>

條件語句滿足SQL-92的語法,執行參數爲message的property。

 

參考links: 

http://javaboutique.internet.com/resources/books/EntJavaBeans/entjava4_1.html

http://java.sun.com/j2ee/1.4/docs/api/javax/jms/Message.html 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章