rocketMq

# RocketMq
rocketMq是阿里巴巴旗下的一款开源的mq框架,支持事物消息、顺序消息、批量消息、定时消息等等消息模型
## nameServer
类似注册中心,主要用来保存topic路由消息,管理Borker。在nameServer的集群中,NameServer和NameServer之间是没有任何通信的。
## broker
核心的一个角色,主要用来保留topic信息,接收producer发送的消息,持久化消息。在一个boker集群中,相同的BrokerName可以称为一个broker组,一个boker组中,bokerId为0的称为注解点,其余称为从节点。brokerName和bokerId是borker启动的时候通过配置文件配置的。每个broker只存放一部分消息。
## consumer
消费消息的一方就是消费者
## consumer group
和生产者 一样,多个消费者的小组,多个消费者组之间消费消息互不干扰
## producer
生产消息的一方就是生产者
## producer group
多个生产者的集合,创建生产者的时候可以指定生产者组
## topic 主题
可以理解为一个消息的集合的名字,生产者在发送消息的时候需要制定发送到哪一个topic下,同样消费者在消费消息的时候也需要知道自己是消费哪一个topic
## tag 子主题
topic下一级的主题,用来指定同一个topic下的消息进行更加详细的区分,发送消息的时候也需要指定

## RocketMq大概工作流程
1、Broker启动的时候,向每台nameServer(因为nameServer之间互不通信)注册自己的信息,这些信息包括自己的ip和端口号,自己这台Broker有哪些topic信息等等
2、Produce在启动之后会跟nameServer建立连接,定期从nameServer中获取Broker的信息,当发送消息的时候,会根据消息需要发送到哪个topic去寻找对应的broker地址,如果有的话,就向这台broker发送消息,如果没找到的话,就看根据是否允许创建topic来决定是否发送消息
3、broker在接受到produce的消息之后,就会将消息存储起来,持久化,如果有从节点的话,也会同步到从节点,实现数据备份
4、consumer启动之后也会跟nameServer建立连接,定期从nameServer中获取Broker和对应topic的信息,然后根据自己需要的订阅的topic找到对应的broker地址,然后跟broker建立连接,获取消息,进行消费

## springBoot集成rocketMq
1、引入依赖 rocketMq-Spring-Boot-starter
2、yml配置 
rocketMq:
  producer:
    group:****
  nameServer:***.**.**
3、创建消费者
@Component
@RocketMQMessageListener(consumerGroup = ‘’,topic= ‘’)
类实现RocketMqListener 重写其中omMessage方法

## RocketMq解决消息丢失问题
1、生产者消息丢失
开启同步消息,阻塞当前线程,等待mq返回才会结束程序
2、rocketMq未刷盘,rocketMq宕机
异步刷盘改为同步刷盘     
3、消费者消息丢失
一般不会出现,消费者消费完消息之后,会返回一个状态码,如果broker始终收不到,会发送消息到另外的消费者

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值