您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“消息代理RabbitMQ框架的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“消息代理RabbitMQ框架的示例分析”這篇文章吧。
目前在市面上有許多消息代理中間件(下面簡稱為消息代理),例如ActiveMQ、RabbitMQ、Kafka等,在使用這些框架時,我們需要調用它們的API,用來發送、接收消息,大概的結構請見圖8-1。
圖8-1 消息代理
消息代理主要用于接收和轉發消息,可以把它看作郵局,消息生產者看作是寄件人,消息消費者是收件人,我們將一信件放到郵箱中,郵遞員最終會把信件送達給收件人,RabbitMQ等框架,就是進行著郵箱、郵遞員和郵局的工作,但它們處理的不是信件,而是“消息”。
String Cloud Sream在生產者和消費者之間,加多了一個類似代理的角色,它直接與消息代理(郵局)進行交互,消息生產者(寄件人)與消息消費者(收件人)不再需要直接調用各個消息代理框架的API,它們甚至感覺不到消息代理的存在。類似于圖8-2的結構。
圖8-2 使用了Spring Cloud Stream后的結構
使用了Stream框架后,消息的生產者和消費者可以更加專注于各自的業務,至于消息(信件)是如何投遞,使用的是哪個消息代理(郵局),它們無須關心。
目前,Spring Cloud Stream的綁定器,提供了RabbitMQ與Kafka兩個消息代理中間件的實現,接下來,我們先簡單了解下RabbitMQ與Kafka框架。
RabbitMQ是一個輕量級的消息代理中間件,它支持多種消息通信協議,支持分布式部署,同時也支持運行于多個操作系統,靈活、高可用等特性,使RabbitMQ廣受歡迎。
RabbitMQ支持多種協議,其中最為重要的,是高級消息隊列協議(AMQP),AMQP是“Advanced Message Queuing Protocol”的縮寫,它定義了“消息客戶端”與“消息代理中間件”之間的通信協議。基于該協議,消息客戶端與消息代理中間件,就可以不受開發語言、具體產品的約束。在學習使用RabbitMQ前,先對AMQP的模型作一個簡單的了解。
前一小節中,消息生產者會向消息代理投遞消息,消息代理會再發送給消息消費者,現在對消息代理作進一步的細化,AMQP的大致模型,請見圖8-3。
圖8-3 AMQP模型
在圖8-3中,生產者會將消息投遞給“消息代理(RabbitMQ服務器)”,它們之間會建立消息通道(Channel),消息由交換器(Exchange)先進行處理,交換器會選擇把消息交給哪一個隊列(Message Queue),最后消息隊列會將消息發給消費者。接下來,先下載和運行RabbitMQ的服務器。
本章所使用的RabbitMQ服務器版本為3.6.11(Windows),由于RabbitMQ服務器使用的是Erlang語言,因此還要下載Erlang,本章所使用的Erlang版本為20.0(64位),下載了Erlang后,會得到otp_win64_20.0.exe這樣的安裝文件,安裝文件可以在本書的/soft目錄中找到,筆者已經為大家下載了32位和64位的安裝程序。
如果在Windows 64位的系統中安裝32位的Erlang,在使用RabbitMQ時會出現異常。
依次安裝完Erlang和RabbitMQ后,RabbitMQ會作為Windows服務啟動。通過Windows命令行進入“C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.11\sbin”,輸入:“rabbitmq-plugins list”查看當前RabbitMQ的插件狀態,為了能使用RabbitMQ的控制臺,輸入“rabbitmq-plugins enable rabbitmq_management”開啟管理插件,正常情況下會輸出以下的信息:
Applying plugin configuration to rabbit@AY-PC... nothing to do.
打開瀏覽器,訪問以下地址:http://localhost:15672,可以看到RabbitMQ的登錄界面,默認的用戶名和密碼均為“guest”,登錄以后主界面如圖8-4所示。
圖8-4 RabbitMQ主界面
此時,RabbitMQ的服務器已經成功運行,該服務器就是一個消息代理中間件。接下來,我們可以編寫消息的生產者與消費者,使用RabbitMQ的API進行消息的測試。
以上是“消息代理RabbitMQ框架的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。