ActiveMQ-05-JMS-PTP和PUB/SUB模型

PTP

概念

PTP模型也就是point to point模型,是基於隊列實現的。生產者發送消息到隊列,消費者從隊列中消費消息,而作為生產者和消費者之間橋樑作用的隊列使得消息的異步傳輸成為可能。

特點

  • 如果在session關閉時,有一些消息已經被消費者接收,但是消費者還沒有簽收(ack),那麼下次如果消費者連接到相同的隊列時,該消息會被再次接收。
  • 如果用戶在receive方法中設定了消息的選擇條件也就是消息過濾,那麼不符合條件的消息仍然會被留在隊列中,不會被接收。
  • 隊列可以長久的保存之中的消息,直到消息被消費掉,消費者不需要因怕消息丟失而和隊列時刻保持激活的連接狀態,要明確異步傳輸的優勢。

PUB/SUB

概念

PUB/SUB即發佈主題消息和訂閱主題消息,主題topic可以被認為是消息傳輸的中介,消費者將消息發佈到主題,訂閱者從主題訂閱消息,兩者之間相互獨立來傳送消息。

特點

  • 兩種訂閱方式,持久訂閱和非持久訂閱。持久訂閱時,客戶端會向jms服務註冊一個自己的身份id,當該客戶端處於離線狀態時,jms會將會保存發送到這個id的主題消息,當客戶端再次連接到jms時會根據自己的id得到所有自己離線時發送到主題的消息。非持久化訂閱只有在客戶端處於激活狀態時才能收到主題的消息,當客戶端處於離線狀態,這個離線時間段內發送到主題的消息不會被客戶端收到,這些消息將會永遠消失。
  • 如果用戶在receive方法中設定了消息的選擇條件也就是消息過濾,那麼不符合條件的消息不會被接收。
  • 非持久訂閱,不能恢復或者重新發送一個未簽收的消息。只有持久訂閱才能恢復或重新發送一個未簽收的消息。
  • 如果我們希望所有消息都必須被接收,則使用持久訂閱,如果可以容忍消息丟失,這用非持久訂閱。
ActiveMQ-05-JMS-PTP和PUB/SUB模型


分享到:


相關文章: