RabbitMQ(一):简介和基本概念
一、簡介
RabbitMQ是一個消息代理,可以將其視為郵局,它接受和轉發消息。
RabbitMQ和郵局之間的主要區別在于它不處理紙張,而是接受、存儲、轉發二進制blob數據 - 消息。
二、隊列
隊列是RabbitMQ中的郵箱的名稱。
消息流經RabbitMQ和應用程序,但它們只能存儲在隊列中。
隊列僅由主機的存儲器&磁盤限制約束,它本質上是一個大的消息緩沖器。
許多生產者可以發送到一個隊列的消息,并且許多消費者可以嘗試從一個隊列接收數據。
三、基本概念
-
ConnectionFactory(連接工廠): 生產Connection的的工廠
-
Connection(連接):是RabbitMQ的socket的長鏈接,它封裝了socket協議相關部分邏輯
-
Channel(頻道|信道): 是建立在Connection連接之上的一種輕量級的連接,我們大部分的業務操作是在Channel這個接口中完成的,(如果把Connection比作一條光纖電纜的話,那么Channel信道就比作成光纖電纜中的其中一束光纖。一個Connection上可以創建任意數量的Channel)
- 聲明隊列:queueDeclare、
- 聲明交換機:exchangeDeclare、
- 隊列的綁定:queueBind、
- 消息的發布:basicPublish、
- 消息的消費:basicConsume等。
-
Producer(生產者):生產消息
-
Consumer(消費者):消費消息Exchange(交換機):生產者會將消息發送到交換機,然后交換機通過路由策略(規則)將消息路由到匹配的隊列中去
- 消費者只需關注隊列即可,不需要關注交換機和路由鍵,
- 消費者可以通過basicConsume(訂閱模式可以從隊列中一直持續的自動的接收消息)
- 或者basicGet(先訂閱消息,然后獲取單條消息,再然后取消訂閱,也就是說basicGet一次只能獲取一條消息,如果還想再獲取下一條還要再次調用basicGet)來從隊列中獲取消息
-
Routing Key(路由鍵):一個String值,用于定義路由規則,Queue(隊列):用于存儲消息的容器,可以看成一個有序的數組,生產者生產的消息會發送到交換機中,最終交換機將消息存儲到某個或某些隊列中,(消息的持久化是將消息寫入rabbitMQ自帶的數據庫中)。
- 在隊列綁定的時候需要指定路由鍵,
- 在生產者發布消息的時候需要指定路由鍵,
- 在消費的時候只需關注隊列即可,不需要關注交換機和路由鍵(不理解)(消費前必須指定指定隊列,聲明)
- 在消息確認機制中,自動回復隊列應答時需要(待定)
- 當消息的路由鍵和隊列綁定的路由鍵匹配時,消息就會發送到該隊列(條件)。
-
Binding(綁定): Binding并不是一個概念,而是一種操作,(RabbitMQ中通過綁定,以路由鍵作為橋梁將Exchange與Queue關聯起來,這樣RabbitMQ就知道如何正確地將消息路由到指定的隊列了)
- (Exchange—>Routing Key—>Queue),通過queueBind方法將Exchange、Routing Key、Queue綁定起來
-
vhost(虛擬主機): RabbitMQ 通過虛擬主機(virtual host)來分發消息,
- 擁有自己獨立的權限控制,不同的vhost之間是隔離的,單獨的。
- vhost是權限控制的基本單位,用戶只能訪問與之綁定的vhost,默認vhost:”/” ,默認用戶”guest” 密碼“guest”,來訪問默認的vhost。
四、理解
下圖說明了生產者將消息發送到交換機中,然后又路由到指定的隊列中?
?
轉載于:https://www.cnblogs.com/zhxb/p/9370022.html
總結
以上是生活随笔為你收集整理的RabbitMQ(一):简介和基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Lucene 02 - Lucene的入
- 下一篇: 命令执行顺序控制与管道