首页 > 其他分享 >RocketMQ在分布式事务中的应用

RocketMQ在分布式事务中的应用

时间:2024-04-12 09:45:59浏览次数:25  
标签:事务 发送 确保 本地 分布式 RocketMQ 消息

半消息 暂时不能投递给消费者的消息 消息回查 通过扫描长期处于“半消息”状态的消息,对消息进行二次确认   0 怎么理解RocketMQ的半消息呢? 我想半天,觉得可以这样解释,也就是本地事务和mq的发送可以看作一个更大的整体事务,这个事务里边又本地事务的执行和消息发送两件事情要做,为什么要有半消息呢,是为了确保消息发送和本地事务执行的结果的一致性,或者说事务性。也就是说,本地事务执行的状态,决定着是否要发送MQ。 官方是怎么解释半消息的意义的? RocketMQ的半消息机制主要解决了分布式事务中消息发送与本地事务执行一致性的问题。具体来说,它确保了在分布式系统中,当本地事务执行成功后,消息能够可靠地发送到消息队列中,从而被后续的消费者正确处理。如果本地事务执行失败,则消息不会被发送到消息队列,从而避免了数据不一致的情况。 这个解释跟我上边的说法是一样的。 半消息的应用场景有哪些? 理解了什么是半消息,半消息解决了什么问题之后,其实很多实际应用的场景都可以使用半消息了,一下是官方给出的几个例子,可以拿来加深理解:

  1. 金融交易
在金融系统中,交易的处理涉及到多个步骤和组件,需要确保每一步的数据都是一致和可靠的。通过使用RocketMQ的半消息机制,可以确保交易信息的正确传递和处理,避免出现数据丢失或不一致的情况。
  1. 订单处理
在电商平台的订单处理流程中,订单状态的更新和库存的扣减需要保持同步。通过半消息机制,可以在订单状态更新成功后,确保库存扣减的消息被可靠地发送到消息队列,再由库存系统消费并处理。
  1. 异步通知
在某些业务场景中,需要异步地通知其他系统或组件关于某个事件的发生。通过使用半消息机制,可以确保通知消息的可靠传递,即使接收方在处理消息时出现故障,也可以通过重试机制确保消息最终被正确处理。

标签:事务,发送,确保,本地,分布式,RocketMQ,消息
From: https://www.cnblogs.com/pangzili/p/18130506

相关文章

  • java 使用Redis的INCR命令或Lua脚本来实现分布式应用生成唯一性ID
    在Java中使用Redis的INCR命令或Lua脚本来生成分布式应用中的唯一性ID是一个常见的做法。以下是如何实现这两种方法的简要说明。1、使用Redis的INCR命令Redis的INCR命令是一个用于递增存储在键中的整数值的原子操作。如果键不存在,那么它将被初始化为0再进行递增操作。命令格式I......
  • Springcloud学习笔记63---RocketMq超时重试,导致重复消费的问题,解决方案
    1.重复消费的背景当Consumer处理时间过长,在超时时间内没有返回给Broker消费状态,那么Broker也会自动重试。设定一个超时时间,达到超时时间的那个消费当作消费失败处理。Java客户端中的DefaultPushConsumer中的构造方法中的consumeTimeout字段(默认15分钟)。packagewilliam.rmq.......
  • java分布式应用生成唯一性ID的方案
    在Java分布式应用中生成唯一性ID是一个常见的需求。以下是一些常用的方案:1.UUID(UniversallyUniqueIdentifier):UUID是一个128位的字符串,通常按照8-4-4-4-12的格式呈现,例如:550e8400-e29b-41d4-a716-446655440000。Java中的java.util.UUID类提供了生成UUID的方法。优点:无需查......
  • 关于分布式的接入的一些问题
      问题一:Ribbon的心跳检测是,对自己缓存的serverlist进行遍历,验证每个服务的状态是否可用,不可用的会被踢出本地缓存?Ribbon的心跳检测是对缓存到本地的服务列表进行的。在这个过程中,Ribbon会遍历本地缓存的ServerList,并对每个服务的状态进行检查,看其是否处于UP状态。这......
  • 关于分布式锁的一些思考
    首先分布式锁要解决的是什么问题?解决的,对唯一资源的操作控制,简单说就是,有一些资源只能同时被一个地方使用。常见的分布式锁的实现方式有哪些?这是一个常见的面试题,一般给出的答案有以下几个:基于数据库的实现方式。可以通过在数据库表中使用排他锁(forupdate)来实现分布式锁,当......
  • 聊聊分布式事务
    分布式事务,算是分布式系统极为重要的一个模块。分布式事务的概念,网上随手可见,我不多讲。今天主要想聊聊,分布式事务的解决思路及其适用场景。在说具体思路之前,我先假设一个业务调度功能,分别会调用A、B、C三个服务。要保证这三个服务的事务,该怎么办呢?可靠消息队列A业务完成并......
  • 分布式任务调度平台XXL-JOB:调度日志打印时区问题
    系列文章目录文章目录系列文章目录前言前言前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。Quartz作为开源作业调度中的佼佼者,是作业调度的首选。但是集群环境中Q......
  • Redis支持事务 yii操作示例代码
    //首先确保已经配置了Yii的Redis组件//在配置文件中(例如:config/main.php)return[//...'components'=>['redis'=>['class'=>'yii\redis\Connection','hostname'=>&......
  • RocketMQ---消息存储
    概述RocketMQ的消息存储在本地文件系统中,默认路径:$home/store下;abort 该文件在broker启动后自动创建,正常关闭broker,该文件会消失;若在未启动broker的情况下,发现该文件存在,说明broker的关闭是非正常关闭;checkpoint存储commit......
  • MXnet安装 与入门 符号式运算 Symbol 数据同步 KVStore 自动并行计算 数据的导出与载
    MXnet参考通过MXNet/Gluon来动手学习深度学习在线githubpdf代码深度学习库MXNet由dmlc/cxxnet,dmlc/minerva和Purine2的作者发起,融合了Minerva的动态执行,cxxnet的静态优化和Purine2的符号计算等思想,直接支持基于Python的parameterserver接口,使......