RocketMQ发送同步、异步、单向、延迟、批量、顺序、批量消息、带标签消息

开发 前端
RocketMQ的这几种消息发送方式,各有千秋,选择哪种方式,得看你的具体需求和场景。同步发送最靠谱,但最慢;异步发送和单向发送快,但可靠性差;延迟发送可以定时发送消息;批量发送能提高效率;顺序发送能保证消息顺序;带标签消息方便过滤和查找。

嘿,各位消息队列的爱好者们,今天咱们来聊聊RocketMQ,这个阿里巴巴开源的分布式消息中间件。RocketMQ功能强大,支持多种消息发送方式,比如同步、异步、单向、延迟、批量、顺序,还有带标签消息。是不是听着就头晕?别担心,我今天就用大白话给大家解释清楚,保证你一看就懂!

一、同步发送

同步发送,顾名思义,就是发送消息后,要等着消息服务器确认收到了,才继续往下走。就像你寄快递,得等快递员确认收货了,你才放心离开。

SendResult sendResult = producer.send(msg);

这种方式最靠谱,但也是最慢的,因为得等着服务器回应。

二、异步发送

异步发送呢,就是发送消息后,不等服务器回应,直接就走人。就像你扔个纸条进邮筒,不管它有没有被邮递员拿走,你就走了。这种方式快,但可能有时候你都不知道消息到底发没发出去。

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

    @Override
    public void onException(Throwable e) {
        // 消息发送失败
    }
});

三、单向发送

单向发送,更是简单粗暴,发送消息后,啥也不管,连回调都不要。就像你把纸条往天上一扔,爱谁谁!这种方式最快,但也是最不可靠的,因为你完全不知道消息的去向。

producer.sendOneway(msg);

四、延迟发送

延迟发送,就是你可以指定一个时间,让消息在未来的某个时间点再发送出去。就像你设置了个定时闹钟,到点了它才会响。

msg.setDelayTimeLevel(level); // level是延迟级别,RocketMQ有预设的延迟级别
producer.send(msg);

五、批量发送

批量发送,就是你可以把多条消息打包成一个批次发送,就像你把一堆信件装进一个包裹里寄出去。这样可以减少网络开销,提高效率。

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

但要注意的是,批量发送可能会因为其中某条消息的问题导致整个批次发送失败。

六、顺序发送

顺序发送,就是保证消息按照你发送的顺序被消费。就像你排队买票,得按照先来后到的顺序。这在某些需要严格顺序的场景中非常重要。

要实现顺序发送,你需要把消息发送到同一个队列里,并且消费者也要按照顺序去消费。

// 选择一个队列
MessageQueue selector = new MessageQueueSelector() {
    @Override
    public MessageQueue select(List<MessageQueue> mqs, Message msg, Object arg) {
        // 根据某种规则选择队列
        return mqs.get(0);
    }
};
producer.send(msg, selector, arg);

七、带标签消息

带标签消息,就是你可以给消息打个标签,就像你给文件加个标签一样,方便以后查找和过滤。

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

消费者在消费时,可以根据标签来过滤消息,只消费自己感兴趣的消息。

结语

好了,小伙伴们,今天咱们就聊到这里。RocketMQ的这几种消息发送方式,各有千秋,选择哪种方式,得看你的具体需求和场景。同步发送最靠谱,但最慢;异步发送和单向发送快,但可靠性差;延迟发送可以定时发送消息;批量发送能提高效率;顺序发送能保证消息顺序;带标签消息方便过滤和查找。希望这篇文章能帮到你,让你在RocketMQ的世界里游刃有余!加油!

责任编辑:武晓燕 来源: 程序员编程日记
相关推荐

2020-11-13 16:40:05

RocketMQ延迟消息架构

2023-12-26 18:22:05

RocketMQ延迟消息

2021-04-15 09:17:01

SpringBootRocketMQ

2024-08-06 09:55:25

2023-12-15 13:08:00

RocketMQ中间件消费顺序

2022-08-09 08:31:29

RocketMQ消息中间件

2021-07-08 07:16:24

RocketMQ数据结构Message

2021-07-13 11:52:47

顺序消息RocketMQkafka

2023-09-04 08:00:53

提交事务消息

2023-11-30 08:34:29

批量消息消息队列

2022-12-22 10:03:18

消息集成

2022-06-27 11:04:24

RocketMQ顺序消息

2024-10-29 08:34:27

RocketMQ消息类型事务消息

2023-12-04 09:23:49

分布式消息

2023-12-21 08:01:41

RocketMQ消息堆积

2022-03-31 08:26:44

RocketMQ消息排查

2023-07-18 09:03:01

RocketMQ场景消息

2023-07-17 08:34:03

RocketMQ消息初体验

2022-06-02 08:21:07

RocketMQ消息中间件

2023-08-01 09:01:51

Broker• 事务消息selector
点赞
收藏

51CTO技术栈公众号