RocketMQ
文章平均质量分 84
fFee-ops
it's tough.
展开
-
RocketMQ消费进度管理
业务实现消费回调的时候,当且仅当此回调函数返回ConsumeConcurrentlyStatus.CONSUME_SUCCESS ,RocketMQ才会认为这批消息(默认是1条)是消费完成的如果这时候消息消费失败,例如数据库异常,余额不足扣款失败等一切业务认为消息需要重试的场景,只要返回ConsumeConcurrentlyStatus.RECONSUME_LATER,RocketMQ就会认为这批消息消费失败了。为了保证消息是肯定被至少消费成功一次,RocketMQ会把这批消费失败的消息重发回Broke原创 2022-02-03 13:47:39 · 2468 阅读 · 0 评论 -
RocketMQ业务保障
1. 为什么从业务上保证1.1 消息丢失问题RocketMQ虽然号称消息不会丢失,但是还是有几率存在MQ宕机以及rocketMQ使用上的问题可能存在消息丢失等,对于类似于支付确认的消息一般来说是一条都不允许丢失的1.2 消息幂等性在网络环境中,由于网络不稳定等因素,消息队列的消息有可能出现重复,大概有以下几种:发送时消息重复当一条消息已被成功发送到服务端并完成持久化,此时出现了网络闪断或者客户端宕机,导致服务端对客户端应答失败。 如果此时生产者意识到消息发送失败并尝试再次发送消息,消费者后续会收原创 2022-02-03 13:28:01 · 985 阅读 · 0 评论 -
RocketMQ文件刷盘机制与过期文件删除
文件刷盘机制RocketMQ 的消息是存储在磁盘上的,这样做有两个优点:保证断电后恢复让存储的消息量超出内存的限制RocketMQ 存储与读写是基于 JDK NIO 的内存映射机制,具体使用 MappedByteBuffer(基于MappedByteBuffer 操作大文件的方式,其读写性能极高)RocketMQ 的消息是存储到磁盘上的,这样既能保证断电后恢复,又可以让存储的消息 超出内存的限制 RocketMQ 为了提高性能,会尽可能地保证磁盘的顺序写 消息在通过 Producer 写人 Ro原创 2022-02-03 13:03:42 · 2219 阅读 · 0 评论 -
RocketMQ消息存储
目前的MQ中间件从存储模型来,分为需要持久化和不需要持久化的两种模型,现在大多数的是支持持久化存储的,比如ActiveMQ、RabbitMQ、Kafka、RocketMQ。ZeroMQ却不需要支持持久化存储而业务系统也大多需要MQ有持久存储的能力,这样可以大大增加系统的高可用性。从存储方式和效率来看,文件系统高于KV存储,KV存储又高于关系型数据库,直接操作文件系统肯定是最快的,但如果从可靠性的角度出发直接操作文件系统是最低的,而关系型数据库的可靠性是最高的。存储介质类型和对比常用的存储类型分为关系型原创 2022-02-03 12:41:27 · 2279 阅读 · 0 评论 -
RocketMQ死信队列
RocketMQ的死信队列介绍就没有RabbitMQ那么复杂。在这篇文章会简单的介绍一下RocketMQ死信队列的特点。死信消息特性不会再被消费者正常消费有效期与正常消息相同,均为 3 天,3 天后会被自动删除。故死信消息应在产生的 3 天内及时处理死信队列特性一个死信队列对应一个消费者组,而不是对应单个消费者实例一个死信队列包含了对应的 Group ID 所产生的所有死信消息,不论该消息属于哪个 Topic若一个 Group ID 没有产生过死信消息,则 RocketMQ 不会为其创建原创 2022-02-01 16:38:41 · 732 阅读 · 0 评论 -
RocketMQ消息保障
1. 生产端保障生产端保障需要从以下几个方面来保障使用可靠的消息发送方式注意生产端重试生产禁止自动创建topic1.1 ⚠消息发送保障1.1.1同步发送发送者向MQ执行发送消息API时,同步等待,直到消息服务器返回发送结果,会在收到接收方发回响应之后才发下一个数据包的通讯方式,这种方式只有在消息完全发送完成之后才返回结果,此方式存在需要同步等待发送结果的时间代价。简单来说,同步发送就是指 producer 发送消息后,会在接收到 broker 响应后才继续发下一条消息的通信方式。使用原创 2022-02-01 16:34:25 · 4046 阅读 · 0 评论 -
RocketMQ消息投递策略
RocketMQ的消息投递分分为两种:一种是生产者往MQ Broker中投递;另外一种则是MQ broker 往消费者 投递(这种投递的说法是从消息传递的角度阐述的,实际上底层是消费者从MQ broker 中Pull拉取的)。RocketMQ的消息模型一个Topic(消息主题)可能对应多个实际的消息队列(MessgeQueue) 在底层实现上,为了提高MQ的可用性和灵活性,一个Topic在实际存储的过程中,采用了多队列的方式,具体形式如上图所示。每个消息队列在使用中应当保证先入先出(FIFO,原创 2022-02-01 15:04:55 · 718 阅读 · 0 评论 -
RocketMQ顺序消息
顺序类型无序消息无序消息也指普通的消息,Producer 只管发送消息,Consumer 只管接收消息,至于消息和消息之间的顺序并没有保证。Producer 依次发送 orderId 为 1、2、3 的消息Consumer 接到的消息顺序有可能是 1、2、3,也有可能是 2、1、3 等情况,这就是普通消息。全局顺序对于指定的一个 Topic,所有消息按照严格的先入先出(FIFO)的顺序进行发布和消费。比如 Producer 发送orderId 1,3,2 的消息, 那么 Consumer原创 2022-02-01 13:20:20 · 1342 阅读 · 3 评论 -
SpringBoot整合RocketMQ
0. 启动Name Server与 Broker1. 引入依赖添加 RocketMQ 客户端访问支持,具体版本和安装的 RocketMQ 版本一致即可。<dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.7.1</version></原创 2022-01-31 22:12:34 · 2495 阅读 · 1 评论 -
RocketMQ安装
Linux安装环境说明对于 RocketMQ 4.3.0版本,官方要求环境如下,其中 Git 用于从 GitHub 获取源码,没有安装也没关系,可以直接下载。官方推荐的流程是:Linux 系统上安装 Git 工具 、Maven、Java JDKGit 工具用于直接从 GitHub 获取 RocketMQ 项目源码下载到 Linux 系统上然后 Maven 将 RocketMQ 源码进行编译成二进制文件安装了 Java JDK 就可以运行 RocketMQ 了JDK和RocketMQ 版本说明原创 2022-01-26 20:55:11 · 9179 阅读 · 2 评论 -
RocketMQ 介绍及基本概念
1 介绍RocketMQ作为一款纯java、分布式、队列模型的开源消息中间件,支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。1.1 RocketMQ 特点支持发布/订阅(Pub/Sub)和点对点(P2P)消息模型在一个队列中可靠的先进先出(FIFO)和严格的顺序传递 (RocketMQ可以保证严格的消息顺序,而ActiveMQ无法保证)支持拉(pull)和推(push)两种消息模式pull其实就是消费者主动从MQ中去拉消息,而push则像rabbit MQ一样,是MQ给消原创 2022-01-26 17:25:19 · 125632 阅读 · 19 评论