0 0

两步操作如何用ActiveMQ来确保顺序?0

现在有两个系统A和B, 某项业务里有这么个场景:系统A要给系统B发送两条数据data1和data2,这两条数据的发送是在同一个事务中, 要求同一事务中data1比data2先在B系统中处理。 如何用ActiveMQ来实现这个要求?

现在想到的方案有下面四个:
1, 给发送data2数据的msg加延迟。
2, 给发送data1数据的msg提高优先级。
3, 用一个单独的msg把data1和data2发送出去, 让consumer自己决定确保data1和data2的顺序。
4, 能不能直接利用队列的先进先出来保证两条数据的顺序?而不再额外加新的设置。 也就是用同一个producer先发送data1,发送完成后,再发送data2.

偶是ActiveMQ方面的新手, 对它的编程模式还不是很熟悉, 请大家来看下上面我列的四个方案的可性行,以及在性能上的影响。

问题补充:用http://activemq.apache.org/message-groups.html和http://activemq.apache.org/exclusive-consumer.html, 好像都能实现。
2012年8月24日 10:40

2个答案 按时间排序 按投票排序

0 0

设置一个优先级属性 

2012年8月24日 11:04
0 0

消息不具有时效性,也就是不能保证先发的就一定先到,因为有网络原因
所以你的方案1和方案2是不靠谱的

同时消息不能保证发一次只接受一次:所以你的接收端一定要控制消息的幂等

唯一的解决方案就是让订阅端先保存消息,之后在先处理data1-->data2

2012年8月24日 10:55

相关推荐

    window系统搭建activeMQ集群和操作步骤

    在Windows系统上搭建ActiveMQ集群是一项关键的任务,它涉及到分布式消息传递系统的设计和优化。ActiveMQ是Apache软件基金会...如有更多问题,可参考提供的`activeMQ使用文档.docx`和实际操作中遇到的问题进行深入学习。

    ActiveMQ开发规范及方案

    为了确保ActiveMQ的正确使用和开发,需要遵守一定的开发规范和方案。 规则定义 在使用ActiveMQ之前,需要定义好规则,例如连接池的使用、消费者监控等。连接池的使用可以提高系统的性能和可靠性,而消费者监控可以...

    apache-activemq-5.11.2

    ⒊ 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性 ⒋ 通过了常见J2EE服务器(如 Geronimo,JBoss 4,GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的...

    ActiveMQ路由配置方式

    在Choice元素中,我们可以使用and、or操作符、正则表达式等来进行条件判断。例如: ```xml ${in.header.odd} or ('1','0') <to uri="activemq:toEndpoint" id="to2"/> ``` 此外,我们还可以在from标签中使用...

    ActiveMQ使用手册(中文版)

    ### ActiveMQ 使用手册知识点概述 #### 一、ActiveMQ 原理与基本构件 **1.1 连接工厂(Connection Factory):** - **定义:** 连接工厂是客户端用来创建连接的对象。在ActiveMQ中,`ActiveMQConnectionFactory` 类...

    activeMQ收发工具.rar

    本压缩包“activeMQ收发工具.rar”包含了用于测试和操作ActiveMQ的实用工具,主要是一个jar包文件,方便用户在安装了Java Development Kit (JDK) 的环境中运行。 ActiveMQ收发工具的核心功能是通过Java应用程序发送...

    JMS 使用 ActiveMQ 传送文件

    1. **JMS、XML和异构企业--使用JMS和XML来促进企业应用的互操作性.doc** - 这份文档可能深入探讨了JMS如何与XML(可扩展标记语言)结合,以支持不同系统间的互操作性。XML常用于数据交换,因为它具有自我描述性和...

    使用WebSocket协议接收ActiveMQ消息

    例如,ActiveMQ允许设置WebSocket连接的心跳间隔,以确保连接的活跃性。另外,如果WebSocket连接意外断开,客户端需要有一个重连策略,以恢复与ActiveMQ的通信。 至于压缩包文件"activemq_ws_接收消息",其中可能...

    activemqactivemq

    总的来说,"activemqactivemq"这个主题涵盖了使用ActiveMQ进行消息收发的核心知识,通过理解和实践提供的代码示例,可以深入理解ActiveMQ的工作原理和使用方法。在实际项目中,合理利用消息中间件如ActiveMQ,能够极...

    spring使用activeMQ实现消息发送

    本文将深入探讨如何在Spring环境中使用ActiveMQ来实现消息的发送与接收,以提高系统的可扩展性和解耦性。 首先,我们需要了解Spring对ActiveMQ的支持。Spring提供了`spring-jms`模块,它包含了一组丰富的API和配置...

    activeMQ初学使用demo

    本初学使用DEMO将带你走进ActiveMQ的世界,通过队列(Queue)和主题(Topic)两种消息模型来了解其基本用法。 1. **ActiveMQ简介**: - ActiveMQ 是Apache软件基金会的一个项目,它提供了一个跨语言、跨平台的消息...

    apache-activemq-5.17.3

    Apache ActiveMQ是开源的、基于Java消息服务(JMS)的应用服务器,它是Apache软件基金会的一部分。这个名为"apache-activemq-5.17.3"的压缩包包含了ActiveMQ的5.17.3版本,这是一个稳定且功能丰富的发布版本。在深入...

    ActiveMQ开发实例-2

    在C++中,我们可以使用ActiveMQ的C++ API来创建生产者和消费者对象,进而实现消息的发送和接收。 **安装和配置ActiveMQ** 在开始开发之前,需要下载并安装ActiveMQ。确保选择正确的版本,以匹配你的开发环境。安装...

    activeMq in action 使用activeMq开发JMS的简单讲述

    本篇文章将深入探讨如何使用ActiveMQ进行JMS开发,以及ActiveMQ的核心特性。 一、Java消息服务(JMS) JMS是一种为分布式环境设计的消息传递规范,它定义了生产、存储和消费消息的标准接口。通过JMS,应用程序可以...

    ActiveMQ讲义.ppt

    **ActiveMQ深度解析** ...通过本讲义的学习,读者将能够全面了解ActiveMQ的基本原理和操作,为在实际项目中应用ActiveMQ打下坚实的基础。在实践中,不断探索和优化,才能充分发挥ActiveMQ在复杂分布式系统中的价值。

    Linux下activeMQ的启动和停止.docx

    在Linux环境下,Apache ActiveMQ是一个广泛使用的开源消息代理和队列服务器,它是Java Message Service (JMS) 的实现,能够处理大量的并发消息传递。ActiveMQ提供了高可用性、可扩展性和稳定性,使得它成为分布式...

    Spring和ActiveMQ的整合实例源码

    2. **Spring JMS模块**:Spring框架的JMS模块提供了一个抽象层,使得开发者无需直接操作JMS API,而是通过Spring的模板和监听器接口来处理消息。这提高了代码的可测试性和可维护性。 3. **ActiveMQ配置**:在Spring...

    WebSocket协议接收ActiveMQ

    在实际应用中,开发者需要注意WebSocket的安全性,比如使用WSS(WebSocket over SSL/TLS)来确保数据传输的安全,以及对连接的管理和错误处理,确保系统的稳定性和可靠性。同时,为了优化性能,可能还需要考虑连接池...

    Jmeter测试ActiveMQ性能报告

    硬件配置包括服务器的CPU、内存和磁盘性能,软件环境包括操作系统、JDK版本、ActiveMQ版本以及JMeter版本等。 2.4 网络环境 网络环境的稳定性和带宽限制可能影响消息传递速度,因此,测试时需确保网络连接的可靠性...

Global site tag (gtag.js) - Google Analytics