關於ActiveMQ的入門基礎概念的理解
(1)首先是ActiveMQ的核心兩種消息發送模式的概念:
- 第一種就是點對點的消息發送模式,就是隻能有一個消費者來進行消費者一個生產者中的消息(Queue)
- 第二種就是基於生產者消費者模式的消息發佈和訂閱的模式,這個是可以有多個消費者來共同消費同一個的Topic(Topic其實就是一個topic多個消費者共同消費)
(2)然後是對比一下這兩種模式的對比和使用場景:
- 數據的狀態上: 如果是在Queue模式中,Queue的數據狀態其實是需要實際保存到數據庫中的,但是Topic模式下的話,可能就是無狀態的,其實也就是說topic會丟失的
- 數據的完整性保證 如果是在Queue模式中的話,Queue能保證生產者產生的每一條數據都會被消費者進行消費的。但是在Topic模式中的話,其實發布消息的生產者並不能保證每條消息都被訂閱的消費者所消費。
- 消息是否會丟失 Queue模式中其實是好比是生產者把消息發送到一個暫存區的隊列中先存放着,不管此時你有沒有消費者來消費,這個消息都不會丟失,消費者什麼時候來消費這個Queue中的消息都可以,而在消息訂閱的Topic模式中,只能是發佈消息的生產者把消息發送到一個指定的Topic中時,只有正在監聽這個Topic的消息訂閱者才能夠獲取到這個消息,如果此時的訂閱者沒有正在監聽這個Topic的 話,那麼這個訂閱者就不能消費到這個Topic的消息(因爲Topic模式下的數據不會持久化的,這個我們可以自己去實現)
- 消息發佈接受策略 在Queue模式中,其實就是當一個生產者生產一條消息之後,只能有一個消費者進行消費,當這個消費者消費完之後,會通知服務器消費者已經消費完成,然後服務器會對Queue裏面的消息進行刪除或者其他操作。但是在Topic模式中,監聽同一個Topic地址的多個訂閱者都能收到這個Topic的消息,然後訂閱消費完成之後,在通知服務器。
(3)由於發佈訂閱模式的消息不是持久化的,那麼我們需要去進行持久化消息的集中方式: