amqp和jms兩者間的區別和聯絡:
常見mq產品 :
在上圖的模型中,有以下概念:
當訊息處理比較耗時的時候,可能生產訊息的速度會遠遠大於訊息的消費速度。長此以往,訊息就會堆積越來越多,無法及時處理。此時就可以使用work 模型:讓多個消費者繫結到乙個佇列,共同消費佇列中的訊息。佇列中的訊息一旦消費,就會消失,因此任務是不會被重複執行的
能者多勞: 處理訊息快的多,多消費訊息,在**中設定basicqos(1),每個消費者只能消費一條
exchange(交換機)只負責**訊息,不具備儲存訊息的能力,因此如果沒有任何佇列與exchange繫結,或者沒有符合路由規則的佇列,那麼訊息會丟失!
在廣播模式下,訊息傳送流程是這樣的:
在fanout模式中,一條訊息,會被所有訂閱的佇列都消費。但是,在某些場景下,我們希望不同的訊息被不同的佇列消費。這時就要用到direct型別的exchange。
在direct模型下:
topic型別的exchange與direct相比,都是可以根據routingkey把訊息路由到不同的佇列。只不過topic型別exchange可以讓佇列在繫結routing key 的時候使用萬用字元!
routingkey 一般都是有乙個或多個單詞組成,多個單詞之間以」.」分割,例如: item.insert
萬用字元規則:
#:匹配乙個或多個詞
*:匹配不多不少恰好1個詞
舉例:audit.#:能夠匹配audit.irs.corporate 或者 audit.irs
audit.*:只能匹配audit.irs
解釋:面試題1:如何解決訊息丟失?面試題2:如何避免訊息堆積
面試題3:如何保證訊息的有序性?
答:大部分業務對訊息的有序性要求不高,如果遇到對有序要求較高的業務,分兩種情況來處理:
業務同時對併發要求較高:
面試題4:如何避免訊息重複消費?
RabbitMQ中Queue詳細介紹
新建queue時有很多引數,都代表什麼含義,在這裡解釋一下 前述 rabbit版本為3.7.6 erlang 版本為 21.0.1 必填項,佇列的名字,建議格式可以為多個字段,表示佇列中存放的內容,比如task.queue 是否需要持久化,有兩個選項durable 長久的 和transient 臨時...
RabbitMq詳細入門學習介紹二
相信你如果看過rabbitmq詳細入門學習介紹一的5種訊息佇列模式是不是有點煩鎖複雜。那麼在這裡,幸運的是,spring提供了對rabbitmq的封裝,將複雜的關係設定整合到配置檔案中。依賴於兩個元件,抽象層spring amqp和實現層spring rabbit。於是 簡化為 生產者 消費者 pu...
RabbitMQ使用介紹及例項
訊息列隊不做過多解釋了,直接講講rabbitmq的基本概念和路由模式。一 安裝及基本概念 connectionfactory connection channel不做過多介紹,基本步驟為 1.初始化連線工廠 2.從連線工廠獲取連線 3.在連線中開啟乙個通道 4.在通道中宣告交換機 5.在通道中宣告乙...