如何理解rabbitMQ的工作過程消費(fèi)模式持久化消息發(fā)送步驟等?
讓我們簡要介紹一下RabbitMQ的工作原理。
讓我們首先熟悉RabbitMQ的一些重要概念:
生產(chǎn)者:發(fā)送消息的應(yīng)用程序。
消費(fèi)者:接收消息的應(yīng)用程序。
隊(duì)列:存儲消息的緩沖區(qū)。
消息:通過RabbitMQ從生產(chǎn)者發(fā)送給消費(fèi)者的信息。
連接:連接是應(yīng)用程序和RabbitMQ代理之間的TCP連接。
通道:通道是連接內(nèi)的虛擬連接。當(dāng)您從隊(duì)列中發(fā)布或使用消息時(shí) - 它們都是通過通道完成的。
Exchange:接收來自生產(chǎn)者的消息,并根據(jù)交換類型定義的規(guī)則將其推送到隊(duì)列。要接收消息,需要將隊(duì)列綁定到至少一個(gè)交換。
綁定:綁定是隊(duì)列和交換之間的鏈接。
路由密鑰:路由密鑰是交換機(jī)查看的密鑰,用于決定如何將消息路由到隊(duì)列。路由密鑰就像消息的地址。
生產(chǎn)者將消息發(fā)送/發(fā)布給代理 - > 消費(fèi)者從代理接收消息。RabbitMQ是生產(chǎn)者和消費(fèi)者之間的通信中間件,即使它們在不同的機(jī)器上運(yùn)行。
當(dāng)生產(chǎn)者向隊(duì)列發(fā)送消息時(shí),它不會直接發(fā)送,而是使用交換機(jī)發(fā)送。下面的設(shè)計(jì)演示了主要的三個(gè)組件如何相互連接。
負(fù)責(zé)將消息路由到不同隊(duì)列的交換代理。這樣消息就可以從生產(chǎn)者接收到交換機(jī),然后再次轉(zhuǎn)發(fā)到隊(duì)列。這被稱為“發(fā)布”方法。
消息將從隊(duì)列中獲取并消耗; 這被稱為'消費(fèi)'。
將消息發(fā)送到多個(gè)隊(duì)列
通過使用更復(fù)雜的應(yīng)用程序,我們將擁有多個(gè)隊(duì)列。因此消息將在多個(gè)隊(duì)列中發(fā)送它。
向多個(gè)隊(duì)列交換發(fā)送消息通過綁定和路由密鑰連接到隊(duì)列。綁定是您設(shè)置為將隊(duì)列連接到交換機(jī)的“鏈接”。Routing鍵是一個(gè)消息屬性。在決定如何將消息路由到隊(duì)列時(shí)(取決于交換類型),交換機(jī)可能會查看此密鑰。
消息中心
消息不會直接發(fā)布到隊(duì)列,而是生成器將消息發(fā)送到交換機(jī)。一個(gè)交換負(fù)責(zé)的消息不同隊(duì)列的路由。一個(gè)交換接受來自生產(chǎn)應(yīng)用程序的消息并將其路由消息隊(duì)列與綁定和路由鍵的幫助。阿結(jié)合是隊(duì)列和交換之間的鏈接。
RabbitMQ中的消息流
該制片人將消息發(fā)布到交換。創(chuàng)建交換時(shí),必須指定它的類型。稍后將詳細(xì)說明不同類型的交換。
該交換接收消息,現(xiàn)在負(fù)責(zé)該消息的路由。交換機(jī)將不同的消息屬性考慮在內(nèi),例如路由密鑰,具體取決于交換類型。
必須從交換到隊(duì)列創(chuàng)建綁定。在這種情況下,我們看到來自交換的兩個(gè)不同隊(duì)列的兩個(gè)綁定。Exchange根據(jù)郵件屬性將郵件路由到隊(duì)列中。
消息留在隊(duì)列中,直到消費(fèi)者處理它們
消費(fèi)者處理消息。
交換類型
直接:直接交換基于消息路由密鑰將消息傳遞到隊(duì)列。
扇出:扇出交換將消息路由到綁定到它的所有隊(duì)列。
主題:主題交換在路由密鑰和綁定中指定的路由模式之間進(jìn)行通配符匹配。
標(biāo)頭:標(biāo)頭交換使用郵件標(biāo)頭屬性進(jìn)行路由。
RabbitMQ核心概念
在深入挖掘RabbitMQ之前,需要先介紹一些重要的概念。
生產(chǎn)者:發(fā)送消息的應(yīng)用程序。
消費(fèi)者:接收消息的應(yīng)用程序。
隊(duì)列:存儲消息的緩沖區(qū)。
消息:通過RabbitMQ從生產(chǎn)者發(fā)送給消費(fèi)者的信息。
連接:連接是應(yīng)用程序和RabbitMQ代理之間的TCP連接。
通道:通道是連接內(nèi)的虛擬連接。當(dāng)您從隊(duì)列中發(fā)布或使用消息時(shí) - 它們都是通過通道完成的。
Exchange:接收來自生產(chǎn)者的消息,并根據(jù)交換類型定義的規(guī)則將其推送到隊(duì)列。要接收消息,需要將隊(duì)列綁定到至少一個(gè)交換。
綁定:綁定是隊(duì)列和交換之間的鏈接。
路由密鑰:路由密鑰是交換機(jī)查看的密鑰,用于決定如何將消息路由到隊(duì)列。路由密鑰就像消息的地址。
AMQP:AMQP(高級消息隊(duì)列協(xié)議)是RabbitMQ用于消息傳遞的協(xié)議。
用戶:可以使用給定的用戶名和密碼連接到RabbitMQ。可以為每個(gè)用戶分配權(quán)限,例如在實(shí)例中讀取,寫入和配置權(quán)限的權(quán)限。