進一步瞭解ActiveMQ
一、JMS選擇器
在生產端發送消息的時候,可以對每一個消息設置屬性,大概有以下的方法,可以設置int類型、boolean類型、byte類型等的key-value對應的屬性:
設置完成後,可以在消費時,加入類似於“age>25”的條件,在創建消費者時進行篩選。
大致過程如下:
- 生產端代碼段:
- 消費端代碼段:
二、消息的接受方式
我們在文一中介紹消費者的接受方式是使用調用receive阻塞去等待消息服務器發送消息,此方式爲同步,並不優雅,我們可以通過註冊監聽器的方式實現消息的接受:
此異步,其實就是新建了一個線程輪詢着觀察。
三、持久化訂閱
發佈/訂閱模式是一種一對多的消息傳播方式,但是對訂閱者來說有一個要求,需要在消息發佈之前,便啓動訂閱,也就意味着訂閱者需要始終處於運行狀態。
那麼,如果訂閱者此時未能運行該如何呢?這就引出了持久化訂閱。
持久化訂閱的意思是,即使訂閱者當時沒有處於運行狀態,但是,可以先將訂閱內容持久化,等到訂閱者運行時,再將訂閱內容接受,代碼如下:
每一個需要持久化的訂閱者需要有唯一客戶端ID。