1.RocketMq名词解释( 二 )


延时消息:
将消息发送到消息队列服务端,但并不期望这条消息立马投递,而是延迟一定时间后才投递到进行消费,该消息即延时消息 。
适用场景

1.RocketMq名词解释

文章插图
定时消息和延时消息适用于以下一些场景:
消息生产和消费有时间窗口要求:比如在电商交易中超时未支付关闭订单的场景,在订单创建时会发送一条 延时消息 。这条消息将会在 30 分钟以后投递给消费者,消费者收到此消息后需要判断对应的订单是否已完成支付 。如支付未完成,则关闭订单 。如已完成支付则忽略 。
通过消息触发一些定时任务,比如在某一固定时间点向用户发送提醒消息 。
1.4.2 顺序消息
顺序消息(FIFO 消息)是消息队列提供的一种严格按照顺序进行发布和消费的消息类型 。顺序消息指消息发布和消息消费都按顺序进行 。
顺序发布:对于指定的一个 Topic,客户端将按照一定的先后顺序发送消息 。顺序消费:对于指定的一个 Topic,按照一定的先后顺序接收消息,即先发送的消息一定会先被客户端接收到 。
1.4.3 事务消息
消息队列提供类似 X/Open XA 的分布事务功能,通过消息队列事务消息能达到分布式事务的最终一致 。
步骤:
发送方向消息队列服务端发送消息 。服务端将消息持久化成功之后,向发送方 ACK 确认消息已经发送成功,此时消息为半消息 。发送方开始执行本地事务逻辑 。发送方根据本地事务执行结果向服务端提交二次确认( 或是 ),服务端收到状态则将半消息标记为可投递,订阅方最终将收到该消息;服务端收到状态则删除半消息,订阅方将不会接受该消息 。在断网或者是应用重启的特殊情况下,上述步骤 4 提交的二次确认最终未到达服务端,经过固定时间后服务端将对该消息发起消息回查 。发送方收到消息回查后,需要检查对应消息的本地事务执行的最终结果 。发送方根据检查得到的本地事务的最终状态再次提交二次确认,服务端仍按照步骤 4 对半消息进行操作
1.5 消息重试
1.5.1 顺序消息的重试
1.4 消息类型
1.4.1 定时消息和延时消息
定时消息:
将消息发送到消息队列服务端,但并不期望这条消息立马投递,而是推迟到在当前时间点之后的某一个时间投递到进行消费,该消息即定时消息 。
延时消息:
将消息发送到消息队列服务端,但并不期望这条消息立马投递,而是延迟一定时间后才投递到进行消费,该消息即延时消息 。
适用场景
定时消息和延时消息适用于以下一些场景:
消息生产和消费有时间窗口要求:比如在电商交易中超时未支付关闭订单的场景,在订单创建时会发送一条 延时消息 。这条消息将会在 30 分钟以后投递给消费者,消费者收到此消息后需要判断对应的订单是否已完成支付 。如支付未完成,则关闭订单 。如已完成支付则忽略 。
通过消息触发一些定时任务,比如在某一固定时间点向用户发送提醒消息 。
1.4 消息类型
1.4.1 定时消息和延时消息
定时消息:
将消息发送到消息队列服务端,但并不期望这条消息立马投递,而是推迟到在当前时间点之后的某一个时间投递到进行消费,该消息即定时消息 。
延时消息:
将消息发送到消息队列服务端,但并不期望这条消息立马投递,而是延迟一定时间后才投递到进行消费,该消息即延时消息 。
适用场景
定时消息和延时消息适用于以下一些场景:
消息生产和消费有时间窗口要求:比如在电商交易中超时未支付关闭订单的场景,在订单创建时会发送一条 延时消息 。这条消息将会在 30 分钟以后投递给消费者,消费者收到此消息后需要判断对应的订单是否已完成支付 。如支付未完成,则关闭订单 。如已完成支付则忽略 。