关于rabbitmq的事务支持问题

问题描述

查了很多资料,说是rabbitmq支持事务但是没想明白,这个事务是这么实现的比如我”支付系统“完成支付之后,要发消息给订单系统和商品系统那这个时候的事务应该怎么做呢假如,”订单系统“接受到消息后处理成功了,但是”商品系统“处理失败了这个时候怎么回滚”支付“结果和”订单“的处理呢

解决方案

本帖最后由 xiaqi1210 于 2014-08-02 15:34:36 编辑
解决方案二:

自己顶一个~
解决方案三:

建议LZ实现一个分布式的锁吧,数据库或者缓存都可以。锁中两个标记位订单系统、商品系统当两个都提交成功则释放,如果两个都没有成功或者有一个没有成功,则都回滚,再释放。
解决方案四:

自己实现分布式锁,成本比较高如果rabbitmq本身带有事务功能的话,应该是比较健壮的
解决方案五:

没人用过了吗

时间: 2024-08-04 05:13:02

关于rabbitmq的事务支持问题的相关文章

Tephra —— HBase 全局一致性事务支持

Tephra 在 Apache HBase 的基础上提供了全局一致性的事务支持.HBase 提供了强一致性的基于行和区域的 ACID 操作支持,但是牺牲了在跨区域操作的支持.这就要求应用开发者花很大力气来确保区域边界上操作的一致性.而 Tephra 提供了全局事务支持,可以夸区域.跨表以及多个 RPC 上简化了应用的开发. 示例代码: /** * A Transactional SecondaryIndexTable. */ public class SecondaryIndexTable {

IBM BPM Advanced Integration Service配置事务支持

该实现演示了一些自动回滚功能,这些功能由 AIS 中基于 SCA 的管理与 WS-AT 协议协同提供.在第 2 部分中,您将为示例场景中的 Credit 和 Charge 操作配置事务支持,并实现两个事务 Web 服务(一个使用 .NET® 实现,另一个使用 JEE 实现). 本系列的第 2 部分将会介绍为示例场景中的 Credit 和 Charge 操作配置事务支持并实现两个事务 Web 服务的步骤:一个 .NET Web 服务,用于从机器 A 上的 SQL Server 上的 Bank1 扣

为ContentProvider添加数据库事务支持

介绍:数据库事务是由一组数据库操作序列组成,事务作为一个整体被执行. 事务的原子性:包含在其中的对数据库的操作序列最终要么全部执行,要么全部不执行.当全部执行时,事务对数据库的修改将生效:当全部不执行时,数据库维持原有的状态,不会被修改. 问题:最近在做一个从sdcard导入数据到数据库的功能,当导入失败时,数据库要恢复到导入前的状态.使用数据库事务处理能很好地满足到我们的需求. 我们知道Android平台上使用的sqlite数据库是支持事务处理功能的,实现的代码如下: [java] view

win10安装(启动) .net framework 3.5组件出错:指定资源管理器中的事务支持未启动或已关闭

问题描述 看网上说的很多方法都试过了,1:使用命令提示符(错误6801,指定资源管理器中的事物支持未启动或以关闭)2:下载安装(错误同上)3:在windows中启动(错误同上)问题就是以上的这些,请大神帮我解答一下 解决方案 解决方案二:人在哪里?人在哪里解决方案三:人在哪里啊,大神在哪里

spring实现jdbctemplate添加事务支持示例_JSP编程

复制代码 代码如下: public interface JdbcTemplate extends JdbcOperations {public abstract void beginTranstaion(); public abstract void commit(); public abstract void rollback();} 复制代码 代码如下: public class JdbcTemplateImpl extends org.springframework.jdbc.core.J

PostgreSQL 10.0 preview sharding增强 - 支持分布式事务

标签 PostgreSQL , 10.0 , sharding , 分布式事务 , 2pc , 两阶段事务 背景 作为一个完整的分布式数据库(sharding),没有分布式事务支持是不行的. 什么是分布式事务呢?比如我们把一个数据库比作一个小朋友,每个小朋友都有100块钱,然后A小朋友给了B小朋友20块钱,这样的话应该是A剩余80块,B剩余120块.如果在交易过程中B小朋友不小心把20块弄丢了,那么会怎么样呢? 理论上应该是交易不成功,A和B都回到100块的状态. 不应该出现中间状态. Post

(RabbitMQ) Java Client API Guide

本篇翻译的是RabbitMQ官方文档关于API的内容,原文链接:http://www.rabbitmq.com/api-guide.html.博主对其内容进行大体上的翻译,有些许部分会保留英文,个人觉得这样更加有韵味,如果全部翻译成中文,会存在偏差,文不达意(主要是功力浅薄~~).文章也对部分内容进行一定的解释,增强对相关知识点的理解. Overview RabbitMQ java client uses com.rabbitmq.client as its top-level package,

RabbitMQ基础概念详解

RabbitMQ简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然. AMQP的主要特征是面向消息.队列.路由(包括点对点和发布/订阅).可靠性.安全. RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python.Ruby..NET.Java.JMS.C.PHP.A

开发自己的Web服务处理程序(以支持Ajax框架异步调用Web服务方法)

当你添加Asp.net AJAX功能到你的Web程序的时候,你需要在Web.config中做一些改变,需要你显式地移除默认的ASMX处理程序并且添加asp.net ajax框架自己的脚本处理器来作为ASMX处理程序.在上一篇异步调用Web服务方法中,我们谈论过,ajax框架的asmx(ScriptHandler)是不支持异步调用Web服务方法的,所以为了让asp.netajax支持异步Web方法调用,我们需要避开该处理器,以提供自定义的处理器来取代它. Asp.netAJAX框架的ASMX处理器