发现一个activemq好玩的地方。
两个activemq的broker实例persistence共用一个mysql数据库。会怎么样?
答案是运行中的两个activemq,是没有问题的。
一个重启的activemq,会加载数据库中存的消息,这个时候就分不清楚了,全部都加载了。
猜想,如果消费的比生产的慢,一样会出现消息混淆的问题。
因为正常情况下,其实存的这份消息和发出去的这份消息,从分出来以后就没有什么关系了。
所以,正常的流程里不会相互影响。
一个正常发过来的持久化的消息, 一般情况下则会变成两份,一份在内存,一份存入数据库。内容中的成功发送给消费者,就去把数据库里这条记录删掉。整个过程没有从数据库加载数据,所以不会混淆。
一重启或者内存放不下了,可能会出问题。
3种测试情况
先后启动两个broker A:61616和broker B:61617,配置同一个mysql数据库。
1、向A中发送数据a,B中发送数据b,数据库msgs表中存在两条记录。
从A receive消息,得到a,从B得到消息b。msgs表清空。
2、向A中发送数据a,数据库msgs表中存在1条记录。关闭A,重启B,从B中接收一条消息a。
3、向A中发送数据a1、a2,数据库msgs表中存在2条记录。重启B。
从B中接收一条消息a1。从A中接收一条消息a1。
从A中接收一条消息a2。从B中接收一条消息a2。
分享到:
相关推荐
ActiveMQ 是一个开源的消息中间件,它是 Java Message Service(JMS)规范的一个实现,用于在分布式系统中传输消息。ActiveMQ 支持多种协议,如 OpenWire、STOMP、AMQP 和 MQTT,允许不同平台的应用程序进行通信。它...
ActiveMQ是Apache软件基金会提供的一个开源消息中间件项目,其主要功能是作为一个消息的接收和转发容器,用于实现消息队列服务。ActiveMQ支持两种基本的角色模型:**生产者(Producer)**和**消费者(Consumer)**。...
在JDBC Master/Slave模式下,ActiveMQ通过使用外部数据库存储持久消息,从而可以在多个ActiveMQ实例之间同步消息状态,保证数据的一致性。这种模式下,通常会有一个Master节点和一个或多个Slave节点。Master节点负责...
ActiveMQ 5.16.1 是该软件的一个版本,它包含了多种特性和服务,使得它成为企业级应用开发的重要组件。 在ActiveMQ 5.16.1中,你可以找到以下关键知识点: 1. **消息模型**:ActiveMQ支持点对点(Queue)和发布/...
系统分为“系统管理员”和“楼宇管理”两个部分,这表明该系统具有不同的权限级别和功能划分。系统管理员可能拥有全面的管理权限,包括用户管理、系统设置等,而楼宇管理则专注于具体的宿舍楼及其相关事务,如宿舍...
- **角色**:其中一个实例被设置为主节点(Master),其余两个为从节点(Slaves)。正常情况下,只有主节点对外提供服务。 ##### 2.2 高可用性 - **定义**:即使主节点发生故障,系统也能够自动切换到备用节点继续...
在ActiveMQ集群环境中,实现消息均衡消费和主备切换是一个重要的功能。本示例主要讨论了如何通过配置和代码实现ActiveMQ集群中的`conduitSubscriptions`策略,以及结合`jdbc`存储,来确保消息的高可用性和消费的均衡...
在Java开发中,DOM4J和JDOM是两种流行的XML处理库,而`mysql-connector`则是连接MySQL数据库的关键组件。下面将详细讲解这三个库及其在实际开发中的应用。 首先,DOM4J是一个非常强大的Java XML API,它提供了丰富...
一个线程用于接收客户端的请求,另一个线程则负责处理和回应这些请求,保证了聊天的并发性。 3. **用户界面(UI)**:Java Swing或JavaFX库可用于创建用户友好的图形界面,包括登录窗口、好友列表、聊天窗口等。事件...
- **数据库准备**:创建一个名为`activemq`的数据库,以便ActiveMQ使用。 - **启动与验证**:重新启动ActiveMQ后,数据库会自动生成三张表:`activemq_acks`(用于存储消息签收信息),`activemq_lock`(存储锁...
数据同步是指在两个或多个数据库之间,当某个数据库中的数据发生改变时,这些变化能够被实时或者近实时地反映到其他数据库中。这有助于防止数据丢失和减少数据冲突,保证各个节点的数据一致性。 在Java中,实现多...
* 在数据库中,使用游标(Cursor)来实现批量更新操作,例如声明一个游标 emp_cur 来更新员工的薪水。 * 数据库设计的重要性,通常是由架构师或工程经理设计的,但自己模块的设计也需要自己来完成。 二、Linux 命令...
Navicat是一款常用的数据库管理工具,用于连接和管理MySQL数据库。 2.2.4 配置MySQL ODBC 配置ODBC数据源,使得NewPNW软件可以通过ODBC访问MySQL数据库。 2.3 启动软件 完成上述配置后,可以启动NewPNW软件,开始...
MySQL是一款开源的关系型数据库管理系统,广泛应用于Web应用开发。掌握SQL语言,理解数据库设计的基本原则(如范式理论),熟悉MySQL的存储引擎(InnoDB、MyISAM等)及其特性,以及索引的创建与优化,对提升数据库...
总之,Smart框架提供了一个集成的单点登录和权限管理解决方案,通过Eclipse、Maven、Tomcat和MySQL的组合,开发者可以快速搭建起安全的分布式应用环境。同时,ActiveMQ作为可选组件,可增强系统的消息处理能力。
在使用PHP和MySQL构建消息队列时,第一步是创建一个消息表来存储需要发送的消息。在给出的例子中,创建了名为sms的表,其中包含id、phone和content三个字段,分别用于存储消息的唯一标识、接收手机号和短信内容。 ...
- 题目要求找到链表倒数第k个节点,这是一个常见的链表问题,可以通过双指针法解决,一个指针先走k步,然后两个指针同步移动,当先走的指针到达末尾时,另一个指针就指向倒数第k个节点。 2. **交叉链表**: - ...
总结来说,这个压缩包提供了一个全面的Java学习路径,从基础知识到高级实践,再到面试准备,涵盖了Java开发的关键领域,包括消息中间件的使用和数据库优化,为成为一个全面的Java开发者奠定了坚实的基础。...
RABBITMQ和ACTIVEMQ是两个广泛使用的消息中间件,它们在微服务间提供异步通信,解耦服务之间的依赖,确保系统的高可靠性和可扩展性。KAFKA是LinkedIn开源的一款分布式流处理平台,适用于大规模实时数据处理和日志...
第一个项目是淘嘟嘟网上商城,他参与了需求分析和项目构建,负责商品管理、广告管理和搜索展示。项目采用了SpringMVC、MyBatis、jQuery、FastDFS、Redis、Solr、Maven等技术。他利用Maven提高了开发效率,使用Solr...