![](https://img-blog.csdnimg.cn/1f212b7957694dde9a021df957073f64.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Rocketmq
文章平均质量分 87
rocketmq的基本概念以及深入了解rocketmq
Martin_lr
自律是成功的第一步
展开
-
RocketMQ⾼可⽤和负载均衡
Master 也可以部署多个。在创建 Topic 的时候,把 Topic 的多个 Message Queue 创建在多个 Broker 组上(相同 Broker 名称,不同 brokerId 的机器组成⼀个 Broker 组),这样当⼀个Broker 组的 Master不可⽤后,其他组的 Master 仍然可⽤, Producer 仍然可以发送消息。具体流程是,消息写⼊内存的 PAGECACHE 后,⽴刻通知刷盘线程刷盘,然后等待刷盘完成,刷盘线程执⾏完成后唤醒等待的线程,返回消息写成功的状态。原创 2024-06-19 20:43:44 · 1265 阅读 · 0 评论 -
RocketMq消息可靠性投递
达到最⼤重试次数后,若消费依然失败,则表明消费者在正常情况下⽆法正确地消费该消息,此时,消息队列 RocketMQ 不会⽴刻将消息丢弃,⽽是将其发送到该消费者对应的死信队列中。消息消费的场景下,消息已投递到消费者并完成业务处理,当客户端给服务端反馈应答的时候⽹络闪断。⼴播消费模式不提供失败重试特性,即消费失败后,失败消息不再重试,继续消费新的消息。⼀条消息进⼊死信队列,意味着某些因素导致消费者⽆法正常消费该消息,因此,通常需要对其进⾏特殊处理。#发送同步消息失败时,重试次数,默认是 2。原创 2024-06-19 20:54:12 · 304 阅读 · 0 评论 -
Rocketmq系统架构
3)Producer启动时,先跟NameServer集群中的某⼀个节点建⽴⻓连接,并从中获取当前订阅Topic的Queue与Broker的地址(IP+Port)之间的映射关系。当Topic路由信息发⽣变化时,NameServer不会主动推送给Client,导致客户端⽆法被动感知Topic信息的动态变化,因此客户端会每30s去NameServer拉取Topic最新的路由信息。2)启动Broker集群,每个Broker主动发起请求,与NameServer集群内所有节点建⽴⻓连接,每隔30s发送⼀次⼼跳包数据;原创 2024-06-19 20:11:56 · 894 阅读 · 0 评论 -
RocketMQ消息存储
(1)消息⽣产与消息消费相互分离,Producer端发送消息最终写⼊的是CommitLog(消息存储的⽇志数据⽂件),Consumer端先从ConsumeQueue(消息逻辑队列)读取持久化消息的起始物理位置偏移量offset、⼤⼩size和消息Tag的HashCode值,随后再从CommitLog中进⾏读取待消费消息的实体内容;⼀般来说依赖的外部系统越多,也会使得本身的设计越复杂,所以采⽤⽂件系统作为消息存储的⽅式,更贴近消息中间件本身的定义。1073741824。原创 2024-06-19 20:33:21 · 751 阅读 · 0 评论 -
Rocketmq介绍以及基本概念
MQ:消息队列。队列,是⼀种FIFO 先进先出的数据结构。消息由⽣产者发送到MQ进⾏排队,然后按原来的顺序交由消息的消费者进⾏处理。MQ的作⽤主要有以下三个⽅⾯:异步处理:提⾼系统的响应速度、吞吐量。例如:发短信解耦:服务之间进⾏解耦,提⾼系统整体的稳定性以及可扩展性;实现数据分发,⽣产者发送⼀个消息后,可以由⼀个或者多个消费者进⾏消费,并且消费者的增加或者减少对⽣产者没有影响。削峰:以稳定的系统资源应对突发的流量冲击。原创 2024-06-19 20:09:06 · 388 阅读 · 0 评论 -
Rocketmq消息类型
Message partOrderMsg = new Message("part_order_topic_test", "order_" + orderId, "KEY_" + orderId, ("局部顺序消息处理_" + orderId + ";Message message = new Message("GLOBAL_ORDER_TOPIC", "", ("全局有序消息" + i).getBytes(RemotingHelper.DEFAULT_CHARSET));原创 2024-06-19 20:19:32 · 685 阅读 · 0 评论