探索解析微服務下的RabbitMQ

2021-09-05 11:42:04 字數 1970 閱讀 4102

概覽本文主要介紹如何使用rabbitmq訊息**來實現分布式系統之間的通訊,從而促進微服務的松耦合。

rabbitmq,也被稱為開源訊息**,它支援多種訊息協議,並且可以部署在分布式系統上。它輕量級,便於部署應用程式。它主要充當乙個佇列,其中輸入的訊息可以首先被操作。rabbitmq可以在許多作業系統和雲環境中執行,並為大多數流行語言提供了廣泛的開發工具。它是生產者-消費者模式,生產者發出資訊,消費者消費資訊。rabbitmq的主要特點如下:

非同步訊息

分布式部署

管理和監控

企業和雲計算

安裝在微服務中使用rabbitmq

在您的微服務體系結構中,rabbitmq是實現訊息佇列的最簡單的免費的可用選項之一。這些佇列模式有助於解耦各個微服務之間的通訊來增加應用程式的彈性。我們可以將這些佇列用於各種目的,比如核心微服務之間的互動、微服務的解耦、實現故障轉移機制,以及通過訊息**傳送電子郵件通知。

無論在**,只要有兩個或兩個以上的核心模組需要相互通訊,我們就不應該進行直接的http呼叫,因為它們會使核心層產生緊耦合,並且當每個核心模組有更多例項時將很難管理。而且每當服務宕機時,http呼叫模式就會失敗,因為在服務重啟之後,我們將無法跟蹤舊的http請求呼叫。這就產生了對rabbitmq的需求。

探索解析微服務下的rabbitmq

在微服務中設定rabbitmq

在微服務架構中,為了演示,我們將使用乙個可以通過任何核心微服務傳送電子郵件通知的示例模式。在這種模式下,我們將有乙個可以存在任何核心微服務的生產者,它將生成電子郵件內容並將其傳送到佇列。然後,這個電子郵件內容由總是在等待佇列中新訊息的消費者來處理。

請注意,由於正在使用spring boot構建微服務,因此我們將為spring提供配置。

1)生產者:這一層負責生成電子郵件內容,並將此內容傳送給rabbitmq中的訊息**。

a)在properties檔案中,我們需要配置佇列名和交換型別,以及安裝rabbitmq伺服器的主機和埠。

queue.name=messagequeue

fanout.exchange=messagequeue-exchange

spring.rabbitmq.host: localhost

spring.rabbitmq.port: 5672

spring.rabbitmq.username: guest

spring.rabbitmq.password: guest

b)我們需要建立乙個配置類,它將使用佇列名和交換型別將佇列繫結到微服務模組。

@configuration

public class rabbitconfiguration )

private string fanoutexchange;

@value($)

private string queuename;

@bean

queue queue() )

private string fanoutexchange;

private final rabbittemplate rabbittemplate;

@autowired

public queueproducer(rabbittemplate rabbittemplate) )

private string queuename;

@value($)

private string fanoutexchange;

@bean

queue queue() catch (jsonparseexception e) catch (exception e) {

logger.error(e.getmessage());

總結通過使用rabbitmq,您可以避免服務之間直接的http呼叫,並消除核心微服務的緊密耦合。這將幫助您在更高階別上實現微服務的可伸縮性,並在微服務之間新增故障轉移機制。

探索解析微服務下的RabbitMQ

概覽 本文主要介紹如何使用rabbitmq訊息 來實現分布式系統之間的通訊,從而促進微服務的松耦合。rabbitmq,也被稱為開源訊息 它支援多種訊息協議,並且可以部署在分布式系統上。它輕量級,便於部署應用程式。它主要充當乙個佇列,其中輸入的訊息可以首先被操作。rabbitmq可以在許多作業系統和雲...

微服務下的配套

程式層面 配置中心 解除系統之間因為配置檔案導致的耦合,做邏輯上解耦 訊息中心 解除系統之間呼叫關係導致的耦合,做邏輯上與物理上的雙重解耦 監控中心 立體化監控,實施機器 程序 介面 日誌 使用者層面多維度監控,及早發現問題 呼叫鏈跟蹤系統 圖形化,量化展現請求在系統中的呼叫路徑,及早定位問題 資料...

微服務架構下的監控問題

用一句話概括就是服務特別多,服務間的呼叫也變得非常複雜 我們其實是微服務的受害者,其實業內很多人做的架構只是服務化,並不夠 微 而我們做的比較徹底,我們線上很多服務都只有乙個 api,但這樣造成線上指標非常多,告警也非常多,讀和寫的壓力都非常大。第二個是智慧型化的監控和告警,運用合適的演算法並加上機...