RocketMQ学习笔记

RocketMQ 作为阿里开源的一款高性能,高吞吐量的分布式消息中间件
  • 特点:
    - 支持Broker和Consumer端消息过滤
    - 支持发布订阅模型,和点对点
    - 支持pull和push‘两种消息模式
    - 单一队列百万消息,亿级消息堆积
    - 支持单master节点,多master节点 ,多master多slave节点
    - 任意一点都是高可用,水平拓展,生产端和消费端,队列都可以分布式
    - 消息失败重试机制,支持特定level的定时消息
    - 新版本底层采用Netty
    - 4.3x版本支持分布式事务
    - 适合金融类业务,高可用性跟踪和审计功能

  • 基础概念
    - Producer:消息生产者
    - Producer Group:消息生产者组,发送同类消息的一个消息生产者组
    - Consumer:消费者
    - Consumer Group:消费同类消息的多个实例
    - Topic:主题,topic是逻辑管理单位,一个topic下可以有多个queue
    - Tag:标签,子主题,对topic的进一步细化,用于区分同一个主题下的不同业务的消息
    - Message:消息,每个message必须指定一个queue
    - Broker:MQ程序,接受生产的消息,提供给消费者消费的程序
    - NameServer:给生产和消费者提供路由消息,提供轻量级的服务发现,路由,元数据信息,可以多个部署,互相独立(类似zk,但比zk轻量级)
    - Offset:偏移量,可以理解为消息进度
    - Commit log:消息存储会写在Commit Log文件里面

  • 心跳机制
    - 单个Broker跟所有Namesrv保持心跳请求,心跳间隔为30秒,心跳请求中包括当前Broker所有的Topic信息。Namesrv会反查Broer的心跳信息, 如果某个Broker在2分钟之内都没有心跳,则认为该Broker下线,调整Topic跟Broker的对应关系。但此时Namesrv不会主动通知Producer、Consumer有Broker宕机。
    - Consumer跟Broker是长连接,会每隔30秒发心跳信息到Broker。Broker端每10秒检查一次当前存活的Consumer,若发现某个Consumer 2分钟内没有心跳, 就断开与该Consumer的连接,并且向该消费组的其他实例发送通知,触发该消费者集群的负载均衡(rebalance)。
    - 生产者每30秒从Namesrv获取Topic跟Broker的映射关系,更新到本地内存中。再跟Topic涉及的所有Broker建立长连接,每隔30秒发一次心跳。 在Broker端也会每10秒扫描一次当前注册的Producer,如果发现某个Producer超过2分钟都没有发心跳,则断开连接。

一个简单MQ例子:

依赖:

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

producer端简单demo:

@Component
public class MQtestProducer {
   

    private String producerGroup = "test1_gropup";
    private String nameServerAddr = "127.0.0.1:9876";

    private DefaultMQProducer producer;

    public MQtestProducer(){
   
        producer = new DefaultMQProducer(producerGroup);

        producer.setNamesrvAddr(nameServerAddr);
        start();
    }

    public void start(){
   
        try {
   
            this.producer.start();
        } catch (MQClientException e) {
   
            e.printStackTrace();
        }
    }

    public DefaultMQProducer getProducer(){
   
        return 
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值