This is an automated email from the ASF dual-hosted git repository. jinrongtong pushed a commit to branch new-official-website in repository https://gitbox.apache.org/repos/asf/rocketmq-site.git
commit cb98481fa5709cc6459728468681d14e8244fa02 Author: RongtongJin <[email protected]> AuthorDate: Tue Jul 5 22:29:59 2022 +0800 Merge to new code --- "docs/02-\347\224\237\344\272\247\350\200\205/06message2.md" | 2 +- "docs/02-\347\224\237\344\272\247\350\200\205/08message4.md" | 2 +- "docs/02-\347\224\237\344\272\247\350\200\205/09message5.md" | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git "a/docs/02-\347\224\237\344\272\247\350\200\205/06message2.md" "b/docs/02-\347\224\237\344\272\247\350\200\205/06message2.md" index 41daf549..aaee4f26 100644 --- "a/docs/02-\347\224\237\344\272\247\350\200\205/06message2.md" +++ "b/docs/02-\347\224\237\344\272\247\350\200\205/06message2.md" @@ -1,7 +1,7 @@ # 顺序消息发送 顺序消息是一种对消息发送和消费顺序有严格要求的消息。对于一个指定的Topic,消息严格按照先进先出(FIFO)的原则进行消息发布和消费,即先发布的消息先消费,后发布的消息后消费。在Apache RocketMQ中支持分区顺序消息,如下图所示,我们可以按照某一个标准对消息进行分区(比如图中的ShardingKey),同一个ShardingKey的消息会被分配到同一个队列中,并按照顺序被消费。顺序消息的应用场景也非常广泛,比如在创建订单的例子中,需要保证同一个订单的生成、付款和发货,这三个操作被顺序执行。如果是普通消息,订单A的消息可能会被轮询发送到不同的队列中,不同队列的消息将无法保持顺序,而顺序消息发送时将ShardingKey相同(同一订单号)的消息序路由到一个逻辑队列中。 - + 顺序消息的代码如下所示: diff --git "a/docs/02-\347\224\237\344\272\247\350\200\205/08message4.md" "b/docs/02-\347\224\237\344\272\247\350\200\205/08message4.md" index b722a212..65ac207a 100644 --- "a/docs/02-\347\224\237\344\272\247\350\200\205/08message4.md" +++ "b/docs/02-\347\224\237\344\272\247\350\200\205/08message4.md" @@ -2,7 +2,7 @@ 在对吞吐率有一定要求的情况下,Apache RocketMQ可以将一些消息聚成一批以后进行发送,可以增加吞吐率,并减少API和网络调用次数。 - + ```java public class SimpleBatchProducer { diff --git "a/docs/02-\347\224\237\344\272\247\350\200\205/09message5.md" "b/docs/02-\347\224\237\344\272\247\350\200\205/09message5.md" index e2046547..37c855a0 100644 --- "a/docs/02-\347\224\237\344\272\247\350\200\205/09message5.md" +++ "b/docs/02-\347\224\237\344\272\247\350\200\205/09message5.md" @@ -2,13 +2,13 @@ 在一些对数据最终一致性有强需求的场景,可以用Apache RocketMQ 事务消息来解决,从而保证上下游数据的一致性。 - + 事务消息发送分为两个阶段,第一阶段会发送一个半事务消息,半事务消息是指暂不能投递的消息,生产者已经成功地将消息发送到了Broker,但是Broker未收到生产者对该消息的二次确认,此时该消息被标记成“暂不能投递”状态,如果发送成功则执行本地事务,并根据本地事务执行成功与否,向Broker确认半事务消息状态(commit或者rollback),半事务消息只有commit状态才会真正向下游投递。如果由于网络闪断、生产者应用重启等原因,导致某条事务消息的二次确认丢失,Broker端会通过扫描发现某条消息长期处于“半事务消息”时,需要主动向消息生产者询问该消息的最终状态(Commit或是Rollback)。这样最终保证了本地事务执行成功,下游就能收到消息,本地事务执行失败,下游就收不到消息。总而保证了上下游数据的一致性。 整个事务消息的详细交互流程如下图所示: - + 事务消息发送步骤如下:
