mirror of
https://github.com/doocs/advanced-java.git
synced 2024-12-24 03:50:08 +08:00
docs: modify how-to-ensure-the-reliable-transmission-of-messages.md (#303)
This commit is contained in:
parent
01d4d3fcd9
commit
ed8f9fc70c
@ -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 有没有问题,服务正不正常。
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user