自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

RocketMQ發(fā)送同步、異步、單向、延遲、批量、順序、批量消息、帶標(biāo)簽消息

開發(fā) 前端
RocketMQ的這幾種消息發(fā)送方式,各有千秋,選擇哪種方式,得看你的具體需求和場(chǎng)景。同步發(fā)送最靠譜,但最慢;異步發(fā)送和單向發(fā)送快,但可靠性差;延遲發(fā)送可以定時(shí)發(fā)送消息;批量發(fā)送能提高效率;順序發(fā)送能保證消息順序;帶標(biāo)簽消息方便過(guò)濾和查找。

嘿,各位消息隊(duì)列的愛(ài)好者們,今天咱們來(lái)聊聊RocketMQ,這個(gè)阿里巴巴開源的分布式消息中間件。RocketMQ功能強(qiáng)大,支持多種消息發(fā)送方式,比如同步、異步、單向、延遲、批量、順序,還有帶標(biāo)簽消息。是不是聽著就頭暈?別擔(dān)心,我今天就用大白話給大家解釋清楚,保證你一看就懂!

一、同步發(fā)送

同步發(fā)送,顧名思義,就是發(fā)送消息后,要等著消息服務(wù)器確認(rèn)收到了,才繼續(xù)往下走。就像你寄快遞,得等快遞員確認(rèn)收貨了,你才放心離開。

SendResult sendResult = producer.send(msg);

這種方式最靠譜,但也是最慢的,因?yàn)榈玫戎?wù)器回應(yīng)。

二、異步發(fā)送

異步發(fā)送呢,就是發(fā)送消息后,不等服務(wù)器回應(yīng),直接就走人。就像你扔個(gè)紙條進(jìn)郵筒,不管它有沒(méi)有被郵遞員拿走,你就走了。這種方式快,但可能有時(shí)候你都不知道消息到底發(fā)沒(méi)發(fā)出去。

producer.sendAsync(msg, new SendCallback() {
    @Override
    public void onSuccess(SendResult sendResult) {
        // 消息發(fā)送成功
    }

    @Override
    public void onException(Throwable e) {
        // 消息發(fā)送失敗
    }
});

三、單向發(fā)送

單向發(fā)送,更是簡(jiǎn)單粗暴,發(fā)送消息后,啥也不管,連回調(diào)都不要。就像你把紙條往天上一扔,愛(ài)誰(shuí)誰(shuí)!這種方式最快,但也是最不可靠的,因?yàn)槟阃耆恢老⒌娜ハ颉?/p>

producer.sendOneway(msg);

四、延遲發(fā)送

延遲發(fā)送,就是你可以指定一個(gè)時(shí)間,讓消息在未來(lái)的某個(gè)時(shí)間點(diǎn)再發(fā)送出去。就像你設(shè)置了個(gè)定時(shí)鬧鐘,到點(diǎn)了它才會(huì)響。

msg.setDelayTimeLevel(level); // level是延遲級(jí)別,RocketMQ有預(yù)設(shè)的延遲級(jí)別
producer.send(msg);

五、批量發(fā)送

批量發(fā)送,就是你可以把多條消息打包成一個(gè)批次發(fā)送,就像你把一堆信件裝進(jìn)一個(gè)包裹里寄出去。這樣可以減少網(wǎng)絡(luò)開銷,提高效率。

List<Message> messages = new ArrayList<>();
// 添加多條消息到messages
SendResult sendResult = producer.send(messages);

但要注意的是,批量發(fā)送可能會(huì)因?yàn)槠渲心硹l消息的問(wèn)題導(dǎo)致整個(gè)批次發(fā)送失敗。

六、順序發(fā)送

順序發(fā)送,就是保證消息按照你發(fā)送的順序被消費(fèi)。就像你排隊(duì)買票,得按照先來(lái)后到的順序。這在某些需要嚴(yán)格順序的場(chǎng)景中非常重要。

要實(shí)現(xiàn)順序發(fā)送,你需要把消息發(fā)送到同一個(gè)隊(duì)列里,并且消費(fèi)者也要按照順序去消費(fèi)。

// 選擇一個(gè)隊(duì)列
MessageQueue selector = new MessageQueueSelector() {
    @Override
    public MessageQueue select(List<MessageQueue> mqs, Message msg, Object arg) {
        // 根據(jù)某種規(guī)則選擇隊(duì)列
        return mqs.get(0);
    }
};
producer.send(msg, selector, arg);

七、帶標(biāo)簽消息

帶標(biāo)簽消息,就是你可以給消息打個(gè)標(biāo)簽,就像你給文件加個(gè)標(biāo)簽一樣,方便以后查找和過(guò)濾。

msg.setTags("tag1,tag2");
producer.send(msg);

消費(fèi)者在消費(fèi)時(shí),可以根據(jù)標(biāo)簽來(lái)過(guò)濾消息,只消費(fèi)自己感興趣的消息。

結(jié)語(yǔ)

好了,小伙伴們,今天咱們就聊到這里。RocketMQ的這幾種消息發(fā)送方式,各有千秋,選擇哪種方式,得看你的具體需求和場(chǎng)景。同步發(fā)送最靠譜,但最慢;異步發(fā)送和單向發(fā)送快,但可靠性差;延遲發(fā)送可以定時(shí)發(fā)送消息;批量發(fā)送能提高效率;順序發(fā)送能保證消息順序;帶標(biāo)簽消息方便過(guò)濾和查找。希望這篇文章能幫到你,讓你在RocketMQ的世界里游刃有余!加油!

責(zé)任編輯:武曉燕 來(lái)源: 程序員編程日記
相關(guān)推薦

2024-11-11 13:28:11

RocketMQ消息類型FIFO

2020-11-13 16:40:05

RocketMQ延遲消息架構(gòu)

2023-12-26 18:22:05

RocketMQ延遲消息

2021-04-15 09:17:01

SpringBootRocketMQ

2024-08-06 09:55:25

2022-08-09 08:31:29

RocketMQ消息中間件

2023-12-15 13:08:00

RocketMQ中間件消費(fèi)順序

2021-07-08 07:16:24

RocketMQ數(shù)據(jù)結(jié)構(gòu)Message

2023-09-04 08:00:53

提交事務(wù)消息

2021-07-13 11:52:47

順序消息RocketMQkafka

2022-12-22 10:03:18

消息集成

2023-11-30 08:34:29

批量消息消息隊(duì)列

2024-10-29 08:34:27

RocketMQ消息類型事務(wù)消息

2022-06-27 11:04:24

RocketMQ順序消息

2023-12-04 09:23:49

分布式消息

2023-07-17 08:34:03

RocketMQ消息初體驗(yàn)

2022-06-02 08:21:07

RocketMQ消息中間件

2025-04-09 08:20:00

RocketMQ消息隊(duì)列開發(fā)

2023-07-18 09:03:01

RocketMQ場(chǎng)景消息

2023-12-21 08:01:41

RocketMQ消息堆積
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)