簡介
RabbitMQ是實現了高級消息隊列協議(AMQP)的開源消息代理軟件(亦稱面向消息的中間件)。RabbitMQ服務器是用Erlang語言編寫的,而群集和故障轉移是構建在開放電信平台框架上的。所有主要的編程語言均有與代理接口通訊的客戶端庫。
使用場景
最近在項目中,将一些無需即時返回且耗時的操作提取出來,進行了異步處理,而這種異步處理的方式大大的節省了服務器的請求響應時間,從而提高了系統的吞吐量。
曆史
Rabbit科技有限公司開發了RabbitMQ,并提供對其的支持。起初,Rabbit科技是LSHIFT和CohesiveFT在2007年成立的合資企業,2010年4月被VMware旗下的SpringSource收購。RabbitMQ在2013年5月成為GoPivotal的一部分。
相關概念
Exchange:交換機,決定了消息路由規則;
Queue:消息隊列;
Channel:進行消息讀寫的通道;
Bind:綁定了Queue和Exchange,意即為符合什麼樣路由規則的消息,将會放置入哪一個消息隊列。
技術亮點
可靠性
RabbitMQ提供了多種技術可以讓你在性能和可靠性之間進行權衡。這些技術包括持久性機制、投遞确認、發布者證實和高可用性機制。
靈活的路由
消息在到達隊列前是通過交換機進行路由的。RabbitMQ為典型的路由邏輯提供了多種内置交換機類型。如果你有更複雜的路由需求,可以将這些交換機組合起來使用,你甚至可以實現自己的交換機類型,并且當做RabbitMQ的插件來使用。
集群
在相同局域網中的多個RabbitMQ服務器可以聚合在一起,作為一個獨立的邏輯代理來使用。