訊息中介軟體的定位分析
在以下的分析中,把產生訊息的應用統一定義為訊息的生產者,接收訊息的應用統一定義為訊息的消費者,儘管在mq中不使用這樣的定義,而是稱之為訊息的傳送 者和接收者。從不同的訊息中介軟體對訊息的產生者和使用者的名稱定義來看,實際上已經反映出各訊息中介軟體之間定位的差異,通過下面的分析,這種差異會更加清 晰。為了概念的統一,本文統一採用訊息的生產者和消費者。
1、mqseries
mq設計的核心思想是儲存**,圍繞訊息如何傳送到目的地完成產品的各類功能。在mq中,傳送訊息之前,需要把訊息流轉的路徑配置出來,訊息的生產者必須 知道訊息在什麼地方被消費,需要把訊息傳送到正確的目的地,並把訊息放入正確的佇列。訊息的消費者從固定的本地佇列中接收訊息,只要是進入這個本地佇列的 訊息,消費者認為都是屬於自己的訊息。典型的使用模式如下:
從這個過程來看,mq實際上是訊息的生產者驅動的,生產者決定把訊息傳送給哪個消費者,需要把訊息放入正確的佇列,無論這個佇列有沒有消費者。
從實際業務系統的角度來看,mq的使用是由業務規則驅動的,業務規則通過對訊息的流轉路徑的配置體現出來(在這裡的業務規則不包括對訊息的實際處理規則)。
2、tonglink/q
tonglink/q的設計理念、定位和mq類似,典型應用模式如下:
mq和tonglink/q作為國內應用最廣泛的訊息中介軟體,主要解決企業內、外跨網路的可靠資料傳輸。基本的應用模式為點對點資料傳輸。
這類訊息中介軟體主要解決了訊息生產者和消費者之間的非同步、可靠傳輸。
3、activemq
active
mq作為jms的乙個實現,基本的理念是提供乙個訊息在生產者和消費者之間交換的媒介,從active
mq的名稱(broker)也能夠看出,它的定位是為客戶端應用提供訊息交換的**。這一點和mqseries的定位完全不同,mqseries更多的應用場景是解決點對點的訊息傳輸。訊息的「傳輸」和「交換」是兩種完全不同的應用場景。
activemq的典型應用場景為:
生產者產生訊息,並放入它所連線的**伺服器的佇列中,本地消費者可以直接從這個佇列中接收訊息,在這種模式下,實現的是訊息的本地消費,即訊息的生產者和消費者連線到同乙個**伺服器。
activemq還支援另外一種訊息的消費模式——異地消費,通過在**伺服器之間配置傳輸通道,多個**伺服器可以組成乙個伺服器網路,消費者可以連線
到伺服器中的任一**伺服器,異地消費其它**伺服器的訊息。異地消費訊息只需要滿足幾個簡單的條件,包括生產者和消費者開啟的佇列名相同,訊息流轉次數
(流轉中能夠經過的**伺服器個數)在傳輸通道配置的範圍內即可,使用非常方便。
從activemq的典型使用場景可以看到,訊息的生產者只負責訊息的生產,並不關心訊息是否正確提交到消費者所在的伺服器。這一點和mqseries明
顯不同。從消費者的角度來看,消費者只需要連線到**伺服器,消費屬於自己的訊息,在這個過程中,消費者不關心本地是否有能夠消費的訊息,**伺服器會自
動查詢到屬於這個消費者的訊息,並把這些訊息轉移到消費者連線的**伺服器,而這個過程對於消費者來看,是完全透明的,消費者不關心訊息的存放地點是本地
還是異地。
從異地消費的內部訊息流轉過程可以看出,activemq的核心思想實際上是由消費者驅動的,如果沒有消費者,訊息會一直儲存在生產者連線的**伺服器的佇列中;只有有消費者時,**伺服器組成的網路才會把訊息流轉到消費者連線的**伺服器的佇列中。
使用activemq,更適合大量小訊息在不同的應用之間進行快速交換的應用場景。對於跨網路的大訊息傳輸,由於activemq是消費者驅動,只有消費
者連線到**伺服器時,訊息才從源伺服器向目標伺服器轉移,消費者需要等待整個訊息的完整傳輸過程,這一過程根據實際的網路的不同,可能會比較「漫長」,
不能實現生產者和消費者之間完全的非同步傳輸,在這樣的場景下,mqseries會更適合。
4、rabbit mq
rabbit
mq主要實現的也是生產者和消費者之間的資料交換,但是更強調消費者接收訊息的規則。看一下rabbit mq的典型使用場景:
從產品的基本定位來看,rabbit mq和active
mq一樣,都是訊息在不同的客戶端應用之間的交換,但是在具體的實現上,不同的產品有各自的出發點。
rabbit
mq的生產者並不把訊息直接放入佇列,而是首先經過乙個exchange,通過在exchange配置規則,再確定把訊息放入那個消費者的佇列。
rabbit
mq的生產者只負責產生訊息,生產者從不把訊息直接放入佇列,不關心訊息是否能夠放入佇列,也就是不關心是否有符合條件的消費者,生產者只能把訊息傳送到exchange。如果沒有任何消費者需要這個訊息,訊息不會進入任何佇列。
從這個過程來看,rabbit mq實際上也是由消費者驅動。
幾個訊息中介軟體的分析
zeromq c語言實現,不能資料持久化。activemq 容易丟訊息,最大併發4000。redis 可以用,但是非主流,案例很少,不方便擴充套件。rocketmq 阿里巴巴的中介軟體,資料很少。在實際應用中,可能會發生消費者收到queue中的訊息,但沒有處理完成就宕機 或出現其他意外 的情況,這種...
訊息中介軟體
1.訊息的優先順序 2.訊息排序 3.訊息過濾 4.訊息持久化 5.訊息重試 6.事務的支援 7.broker滿 生產者,佇列,消費者 訊息佇列的優點 1 解耦2 非同步訊息,系統響應 在jms中,有兩種訊息模型 點對點模式和發布訂閱模式。1.在點對點模式中 有三種角色 1 訊息佇列,傳送者,接受者...
訊息中介軟體
如何理解訊息中介軟體?訊息中介軟體是儲存訊息的乙個容器,與資料庫不同的是資料庫儲存的資料是可以被修改的,而訊息中介軟體一般不會被修改 訊息中介軟體在消費的生產者與消費者產生,相當於乙個中間人的角色,提供了路由保證訊息的傳遞,如果消費者不能及時接收,訊息會保留下來,知道消費者上線 保證在存活期內 訊息...