RocketMQ学习

RocketMQ主要有四大核心组成部分

 
1.NameServer 是 RocketMQ 的服务注册中心
2.Broker是消息存储中心,主要作用是接收来自 Producer 的消息并存储,Consumer 从这里取得消息。

3.Consumer也称为消息订阅者,负责从 Topic 接收并消费消息。
消费者从brokers那里拉取信息并将其输入应用程序

4.Producer也称为消息发布者,负责生产并发送消息至 Topic。
生产者向brokers发送由业务应用程序系统生成的消息

交互过程

1.NameServer 先启动
2.Broker 启动时向 NameServer 注册
3.生产者在发送某个主题的消息之前先从 NamerServer 获取 Broker 服务器地址列表(有可能是集群),然后根据负载均衡算法从列表中选择一台Broker 进行消息发送。
4.NameServer 与每台 Broker 服务器保持长连接,并间隔 30S 检测 Broker 是否存活,如果检测到5.Broker 宕机(使用心跳机制, 如果检测超120S),则从路由注册表中将其移除。
 

RocketMQ 特点


支持发布/订阅(Pub/Sub)和点对点(P2P)消息模型
在一个队列中可靠的先进先出(FIFO)和严格的顺序传递 (RocketMQ可以保证严格的消息顺序,而ActiveMQ无法保证)
两种消息模式:1拉pull缺点:时效性差。2推push 缺点需要维护一个长连接
单一队列百万消息的堆积能力
支持多种消息协议,如 JMS、MQTT 等


消息消费模式


消息消费模式有两种:集群消费(Clustering)和广播消费(Broadcasting)
默认情况下就是集群消费,该模式一条消息只能被某一消费者组中的某一台机器消费,如果某个消费者挂掉,分组内其它消费者会接替挂掉的消费者继续消费。
而广播消费消息会发给消费者组中的每一个消费者进行消费,消息顺序(Message Order)有两种:顺序消费(Orderly)和并行消费(Concurrently)。

RocketMQ 优势


目前主流的 MQ 主要是 RocketMQ、kafka、RabbitMQ,其主要优势有:
支持事务型消息(消息发送和 DB 操作保持两方的最终一致性,RabbitMQ 和 Kafka 不支持)
支持结合 RocketMQ 的多个系统之间数据最终一致性(多方事务,二方事务是前提)
支持 18 个级别的延迟消息(Kafka 不支持)
支持指定次数和时间间隔的失败消息重发(Kafka 不支持,RabbitMQ 需要手动确认)
支持 Consumer 端 Tag 过滤,减少不必要的网络传输(即过滤由MQ完成,而不是由消费者完成。RabbitMQ 和 Kafka 不支持)
支持重复消费(RabbitMQ 不支持,Kafka 支持)

三种发布方式


1同步消息
producer向 broker 发送消息 ,直到broker 服务器返回发送结果 。
2异步消息
producer向 broker 发送消息时指定消息发送成功及发送异常的回调方法 ,消息发送成功或失败的回调任务在一个新的线程中执行 
3单向消息
producer向 broker 发送消息 , 不等待broker 服务器的结果 。

示例代码 

springboot配置

消费者代码

Controller代码

 

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值