From ed8f9fc70cadcb3528fe44ef7cc3725e2a2b954a Mon Sep 17 00:00:00 2001 From: Zane <103317992+cn-zane@users.noreply.github.com> Date: Wed, 29 May 2024 12:34:10 +0800 Subject: [PATCH] docs: modify how-to-ensure-the-reliable-transmission-of-messages.md (#303) --- .../how-to-ensure-the-reliable-transmission-of-messages.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/high-concurrency/how-to-ensure-the-reliable-transmission-of-messages.md b/docs/high-concurrency/how-to-ensure-the-reliable-transmission-of-messages.md index 69eff3f4e..2a4cc712f 100644 --- a/docs/high-concurrency/how-to-ensure-the-reliable-transmission-of-messages.md +++ b/docs/high-concurrency/how-to-ensure-the-reliable-transmission-of-messages.md @@ -178,9 +178,9 @@ RabbitMQ 如果丢失了数据,主要是因为你消费的时候,**刚消费 #### 生产者发送消息时如何保证不丢失? -解决发送时消息丢失的问题可以采用 RocketMQ 自带的**事物消息**机制 +解决发送时消息丢失的问题可以采用 RocketMQ 自带的**事务消息**机制 -事物消息原理:首先生产者会发送一个**half 消息**(对原始消息的封装),该消息对消费者不可见,MQ 通过 ACK 机制返回消息接受状态, 生产者执行本地事务并且返回给 MQ 一个状态(Commit、RollBack 等),如果是 Commit 的话 MQ 就会把消息给到下游, RollBack 的话就会丢弃该消息,状态如果为 UnKnow 的话会过一段时间回查本地事务状态,默认回查 15 次,一直是 UnKnow 状态的话就会丢弃此消息。 +事务消息原理:首先生产者会发送一个**half 消息**(对原始消息的封装),该消息对消费者不可见,MQ 通过 ACK 机制返回消息接受状态, 生产者执行本地事务并且返回给 MQ 一个状态(Commit、RollBack 等),如果是 Commit 的话 MQ 就会把消息给到下游, RollBack 的话就会丢弃该消息,状态如果为 UnKnow 的话会过一段时间回查本地事务状态,默认回查 15 次,一直是 UnKnow 状态的话就会丢弃此消息。 为什么先发一个 half 消息,作用就是先判断下 MQ 有没有问题,服务正不正常。