訊息佇列之RocketMq

2022-06-21 13:54:08 字數 1777 閱讀 4393

rocketmq 是阿里巴巴在2023年開源的分布式訊息中介軟體,有點什麼的就不多說了,就直接將怎麼用。

rocketmq大概就是真麼一種結構,具體的使用流程就是,訊息生產者(producer)將訊息發布到訊息中心,消費者(consumer)啟動監聽,當監聽到訊息時去訊息中心拿訊息。而nameserver的作用我的理解就類似乙個註冊中心,將broker的資訊提供給produce和consumer。

rocketmq天然支援集群,乙個producer集群擁有同乙個groupid,同理,同乙個consumer集群也是有相同的groupid,當訊息的消費模式為集群模式時,同乙個集群的消費者智慧型消費一次訊息,即如果consumer1消費了訊息,這個集群中的其他消費者就不能再消費此訊息,除非將消費模式設定為廣播模式。

廢話不多說,本地搭建一套rocketmq,實踐出真知。

二、本地部署rocketmq

2、啟動nameserver

nohup sh bin/mqnamesrv &tail -f ~/logs/rocketmqlogs/namesrv.log
啟動日誌會列印在控制台,如下圖。

3、啟動broker

nohup sh bin/mqbroker -n localhost:9876 &

tail -f ~/logs/rocketmqlogs/broker.log

同樣,日誌如下圖

4、啟動consumer

寫**之前首先引入依賴:

如上圖所示,這個依賴中已經包括slf4j和netty,所以說如果只為了練習,這乙個依賴就夠了。

接著建立乙個類,啟動main方法。

public class consumer  catch (unsupportedencodingexception e) }}

return consumeconcurrentlystatus.consume_success;

}});

// 消費者物件在使用之前必須要呼叫 start 初始化

consumer.start();

system.out.println("訊息消費者已啟動");}}

5、啟動producer

**如下,記得引入包,然後啟動main方法。

public class producer 

// 一旦生產者例項不再被使用則將其關閉,包括清理資源,關閉網路連線等

producer.shutdown();}}

到此,部署並啟動完成,我們看到控制台消費者已經收到了訊息。使用起來真的是非常的簡單,當然簡單的練習還是很容易,不過真正在專案裡用起來還是會有很多坑,包括重複消費、訊息丟失等等很多,還是要多用才能長經驗啊。

rocketmq 訊息佇列

rocketmq 是乙個分布式的訊息佇列,主要有product,broker,consumer,nameserver組成,提供流量的削峰填谷,非同步通知,應用解耦的功能。rocketmq和kafka功能上比較相似,但是在底層架構上還是有很多不同,比如kafka中每個topic下的每個partitio...

訊息佇列 RocketMQ 01

訊息佇列中介軟體是分布式系統中重要的元件,它主要解決的問題是 應用解耦 非同步訊息 流量削鋒等問題。實現高效能,高可用,可伸縮和最終一致性架構。目前使用較多的訊息佇列有 activemq rabbitmq zeromq kafka metamq rocketmq等。訊息即資料。一般訊息的體量不會很大...

訊息佇列(三)RocketMQ如何儲存訊息

rocket的訊息是有consume queue和commit log組成。consume queue consume queue是訊息的邏輯佇列,相當於字典目錄,用來指定訊息在物理檔案 commit log 上的位置,我們可以在配置中指定consumequeue和commitlog儲存的目錄。每乙...