diff --git a/MQ/RocketMQ.md b/MQ/RocketMQ.md
index db55009..d469462 100644
--- a/MQ/RocketMQ.md
+++ b/MQ/RocketMQ.md
@@ -94,4 +94,58 @@
## 注意事项
-事务消息只保证**本地主分支事务**和**下游消息发送事务**的一致性,不能保证消息消费结果和上游事务的一致性。所以下游服务要保证自己的分支事务正确处理,并做好消费重试机制,宕机、重启这种短暂的不可用,可以直接利用服务端的重试机制。在消息提交到下游消费端处理完成之前,下游分支和上游事务之间的状态可能会不一致。因此,**事务消息仅适合接受异步执行的事务场景**。
\ No newline at end of file
+事务消息只保证**本地主分支事务**和**下游消息发送事务**的一致性,不能保证消息消费结果和上游事务的一致性。所以下游服务要保证自己的分支事务正确处理,并做好消费重试机制,宕机、重启这种短暂的不可用,可以直接利用服务端的重试机制。在消息提交到下游消费端处理完成之前,下游分支和上游事务之间的状态可能会不一致。因此,**事务消息仅适合接受异步执行的事务场景**。
+
+# 消费重试
+
+当发生以下情况,将会触发消费重试机制:
+
+- 网络异常造成连接失败或请求超时
+- 生产者调用服务端失败或者超时,SDK会重新投递
+- 服务端节点处于重启或下线等状态
+- 服务端卡顿造成请求超时
+- 服务端系统异常、流控
+
+对于事务消息超时和异常不会进行重试,走回查的逻辑。触发重试会立即重试无时间间隔,如果是流控错误,将按照指数退避策略延迟重试,指数退避策略通过以下参数控制间隔:
+
+- INITIAL_BACKOFF:第一次失败,重试需等待多久,默认1秒
+- MULTIPLIER:退避倍率,默认1.6
+- JITTER:随机抖动因子,默认0.2
+- MAX_BACKOFF:等待间隔上限,默认120秒
+- MIN_CONNECT_TIMEOUT:最短重试间隔,默认20秒
+
+SDK内置的重试机制并不能保证消息发送一定成功,因为生产者达到重试限制后仍然发送失败,需要自己兜底处理。由于远程调用的不确定性,如果触发消息重试,可能会产生消息重复的问题,消费者也要处理好消费重复的问题,比如幂等性消费。
+
+# 死信队列
+
+当一条消息达到最大重试次数仍然消费失败,服务端将挪到一个特殊的队列,这个队列中的消息无法再被消费者正常消费。SDK有开启死信队列的消费API,默认3天后自动删除。
+
+# 流控机制
+
+- 当消费组的消费位点处于队列的最大消费位点,而某些业务又在回溯队列的历史消息,这时就会触发流控
+- 消费过慢,导致队列中大量的消息堆积,超过一定数量也会触发流控,目的是减少下游消费的压力
+
+为避免触发消息流控,可以利用可观测性功能监控系统容量等,保证资源充足。
+
+# 消费模式
+
+一条消息支持被多个消费组订阅,每个消费组可以初始化若干个消费者。消费者有两种模式的消费:
+
+- 广播(Broadcast)
+- 共享(Share)
+
+
+
+##### 广播消费
+
+每个消费组只初始化唯一的一个消费者,多个消费组订阅这个 topic 时,每个消费者都能消费到。该方式一般可用于网关推送、配置推送、集群实例之间同步缓存等场景。
+
+##### 共享消费
+
+每个消费组下初始化多个消费者,这些消费者共同分担消息,1条消息只被其中1个消费者处理。可以实现消费组内流量的水平拆分和负载均衡,一般用于微服务解耦。
+
+⚠️PushConsumer默认且仅使用消息粒度负载均衡策略,同一消费组内的多个消费者将按照消息粒度平均分摊所有消息。
+
+
+
+# 消息存储