深入浅出RocketMQ官方文档

参考链接

https://rocketmq.apache.org/zh/

生产者

基本概念

https://rocketmq.apache.org/zh/docs/4.x/producer/01concept1

消息

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Tag

在这里插入图片描述

什么时候该用 Topic,什么时候该用 Tag?

在这里插入图片描述

Keys

在这里插入图片描述

队列

在这里插入图片描述
在这里插入图片描述

生产者

在这里插入图片描述

普通消息发送

1.向集群中创建 Topic

在这里插入图片描述

2.添加客户端依赖

<dependency>
  <groupId>org.apache.rocketmq</groupId>
  <artifactId>rocketmq-client</artifactId>
  <version>4.9.4</version>
</dependency>

3.消息发送

在这里插入图片描述

3.1 同步发送

在这里插入图片描述

SendResult sendResult = producer.send(msg); 

在这里插入图片描述
在这里插入图片描述

3.2 异步发送

在这里插入图片描述

            producer.send(msg, new SendCallback() {
                @Override
                public void onSuccess(SendResult sendResult) {
                    System.out.printf("%-10d OK %s %n", index,
                            sendResult.getMsgId());
                }

                @Override
                public void onException(Throwable e) {
                    System.out.printf("%-10d Exception %s %n", index, e);
                    e.printStackTrace();
                }
            });

在这里插入图片描述

3.3 单向模式发送

在这里插入图片描述

producer.sendOneway(msg);

在这里插入图片描述

顺序消息发送

顺序消息介绍

在这里插入图片描述

在这里插入图片描述

顺序消息示例代码

                SendResult sendResult = producer.send(msg, new MessageQueueSelector() {
                    @Override
                    public MessageQueue select(List<MessageQueue> mqs, Message msg, Object arg) {
                        Integer id = (Integer) arg;
                        int index = id % mqs.size();
                        return mqs.get(index);
                    }
                }, orderId);

在这里插入图片描述

顺序消息的一致性

在这里插入图片描述

延迟消息发送

延时消息介绍

在这里插入图片描述

延时消息约束

在这里插入图片描述

延时消息示例代码

            Message message = new Message("TestTopic", ("Hello scheduled message " + i).getBytes());            
            message.setDelayTimeLevel(3);

核心就是setDelayTimeLevel

在这里插入图片描述

批量消息发送

在这里插入图片描述
在这里插入图片描述

事务消息发送

事务消息介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

事务消息步骤

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

消费者

基础概念

https://rocketmq.apache.org/zh/docs/4.x/consumer/01concept2

消费者与消费组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

负载均衡

在这里插入图片描述

在这里插入图片描述

消费位点

在这里插入图片描述
在这里插入图片描述

推、拉和长轮询

在这里插入图片描述

Push消费(推送)

集群模式和广播模式

在这里插入图片描述

并发消费和顺序消费

在这里插入图片描述

        consumer.registerMessageListener(new MessageListenerOrderly() {
            AtomicLong consumeTimes = new AtomicLong(0);

            @Override
            public ConsumeOrderlyStatus consumeMessage(List<MessageExt> msgs, ConsumeOrderlyContext context) {
                System.out.printf("%s Receive New Messages: %s %n", Thread.currentThread().getName(), msgs);
                this.consumeTimes.incrementAndGet();
                if ((this.consumeTimes.get() % 2) == 0) {
                    return ConsumeOrderlyStatus.SUCCESS;
                } else if ((this.consumeTimes.get() % 5) == 0) {
                    context.setSuspendCurrentQueueTimeMillis(3000);
                    return ConsumeOrderlyStatus.SUSPEND_CURRENT_QUEUE_A_MOMENT;
                }
                return ConsumeOrderlyStatus.SUCCESS;
            }
        });

消息过滤

在这里插入图片描述

Tag

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

SQL92过滤

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

消息重试和死信队列

消息重试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

死信队列

在这里插入图片描述

Pull消费(拉)

https://rocketmq.apache.org/zh/docs/4.x/consumer/03pull

在这里插入图片描述
涉及到的类

DefaultMQPullConsumer
DefaultLitePullConsumer

Pull Consumer

在这里插入图片描述

public enum PullStatus {
    FOUND,   
    NO_NEW_MSG, 
    NO_MATCHED_MSG, 
    OFFSET_ILLEGAL
}

在这里插入图片描述

Lite Pull Consumer

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

基本最佳实践

https://rocketmq.apache.org/zh/docs/4.x/bestPractice/01bestpractice

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值