5.1 How are messages stored by ActiveMQ?
5.1 ActiveMQ如何存储消息
It’s important to gain some basic knowledge of the storage mechanisms for messages
in an ActiveMQ message store. This will aid in configuration and provide an awareness
of what takes place in the ActiveMQ broker during the delivery of persistent messages.
Messages sent to queues and topics are stored differently, because there are some storage
optimizations that can be made with topics that don’t make sense with queues, as
we’ll explain.
了解ActiveMQ消息存储中关于消息存错机制的基础知识相当重要,这有助于理解ActiveMQ消息存储的配置,
有助于了解ActiveMQ代理在消息分发后持久化消息时究竟发生了什么.发送到消息队列和主题中的消息的
存储方式是不同的,因为,正如我们将要讨论的,有一些消息存储方面的优化方案可能适合消息主题中消息存储,
但是不适用于消息队列中消息存储.
Storage for queues is straightforward—messages are basically stored in first in, first
out order (FIFO). See figure 5.1 for a depiction of this. One message is dispatched to a
single consumer at a time. Only when that message has been consumed and acknowledged
can it be deleted from the broker’s message store.
消息队列中消息的存储是简单直接的--这种消息采用先进先出的方式存储.图5.1是这个过程的描述.
一次发送一个消息给单一的消息消费者.当且仅当发送的消息被处理并确认以后,该消息才会从代理的
消息存储中删除.
For durable subscribers to a topic, each consumer gets a copy of the message. In
order to save storage space, only one copy of a message is stored by the broker. A durable
subscriber object in the store maintains a pointer to its next stored message and
dispatches a copy of it to its consumer as shown in figure 5.2. The message store is
implemented in this manner because each durable subscriber could be consuming
messages at different rates or they may not all be running at the same time. Also,
because every message can potentially have many consumers, a message can’t be
deleted from the store until it’s been successfully delivered to every interested durable
subscriber.
对于持久的消息主题订阅者来说,每一个消息消费者会获取一份消息的拷贝.为了节省消息存储空间,
代理只存储一份消息.如图5.2所示,一个持久主题订阅者维护一个指针,该指针指向他订阅的下一条消息,
同时主题订阅者会拷贝这个指针指向的消息然后发送给消息消费者.消息存储设计成这种方式是因为每个持久的
主题订阅者处理消息的速度可能不同,或者它们可能并非同时都在运行.同样,因为一个消息能还用非常到的潜在
消费者,消息不会从存储中删除,除非该消息已经被成功的发送到所有对他感兴趣的持久的消息订阅者.
Every message store implementation for ActiveMQ supports storing messages for
both queues and topics, though obviously the implementation differs between storage
types. For example, the memory store holds all messages in memory.
尽管存储类型明显不同,ActiveMQ的每一种消息存储的实现都支持消息队列中消息和
主题中消息的存储.例如,内存存储中将所有消息都保存在内存中.
Throughout the rest of this chapter, more details about configuring the different
ActiveMQ message stores and their advantages and disadvantages will be explained.
本章的其他章节将阐述各种ActiveMQ消息存储的配置细节以及他们的优缺点.
相关推荐
“消息队列”是在消息的传输过程中保存消息的容器。 5 常用消息服务应用 5.1ActiveMQ ActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持 JMS1.1 和 J2EE 1.4 规范的 JMS ...
- **基于内存:** 非持久性消息存储在内存中,不保存在磁盘上。 - **基于磁盘:** 持久性消息存储在磁盘上,以防止消息丢失。 **2.3 优先级(Priority):** - **定义:** 控制消息处理顺序的属性。 - **范围:** 从0到...
ActiveMQ提供了多种消息存储策略,其中KahaDB是最常用的一种。KahaDB是一个专门为ActiveMQ设计的嵌入式日志文件系统,能够提供高效且可靠的消息持久化服务。 - **KahaDB的工作原理**:KahaDB采用追加的方式写入消息...
#### 六、ActiveMQ的消息存储 **6.1 队列与Topic** - **队列**:适用于点对点的消息模型。 - **Topic**:支持发布/订阅的消息模型。 **6.2 存储引擎** - **KahaDB**:ActiveMQ默认使用的高性能存储引擎。 - **...
Redis 是一种内存数据结构存储系统,可以作为数据库、缓存和消息中间件使用。它支持多种数据类型如字符串、哈希表、列表等。 **2.2 环境准备** - Redis 安装包位于 `/home/datum/install/` - 解压并编译安装 Redis...
队列作为临时的数据存储,保证了消息的顺序和至少一次投递。此外,消息队列还支持消息的持久化,以防止数据丢失。 二、MQ消息队列类型 2.1 发布/订阅模式 在这种模式下,多个消费者可以订阅同一个主题,当生产者...
消息会自动路由到相应的分区(Partition),并最终存储在Broker上。 - **配置参数**: 生产者通过指定Topic名称及至少一个Broker地址来完成消息的发布。此外,生产者还可以设置消息确认机制(ACK)来确保消息的成功...
- **Apache ActiveMQ**:高性能的消息中间件,支持JMS标准。 - **Apache CXF**:用于构建和调用RESTful服务和SOAP服务的框架。 - **Apache Karaf**:一个轻量级的容器,用于部署和管理ServiceMix。 ##### 4.2 实现...
#### 四、消息队列(ActiveMQ) **4.1 ActiveMQ简介** - **特性**: 支持多种消息传递模式、持久化、事务等。 - **用途**: 解耦、异步处理、流量削峰。 **4.2 ActiveMQ使用场景** - **解耦**: 生产者和消费者无需...
10.1.3在spring中安装activemq 10.2协同使用jms和spring 10.2.1处理冗长失控的jms代码 10.2.2使用jms模板 10.2.3转换消息 10.2.4将spring的网关支持类应用于jms 10.3创建消息驱动pojo 10.3.1创建消息监听器 ...
5.1 Spring的数据访问哲学 5.1.1 了解Spring数据访问的异常体系 5.1.2 数据访问的模板化 5.1.3 使用DAO支持类 5.2 配置数据源 5.2.1 使用JNDI数据源 5.2.2 使用数据源连接池 5.2.3 基于JDBC驱动的数据源 ...
5.1 Spring的数据访问哲学 5.1.1 了解Spring数据访问的异常体系 5.1.2 数据访问的模板化 5.1.3 使用DAO支持类 5.2 配置数据源 5.2.1 使用JNDI数据源 5.2.2 使用数据源连接池 5.2.3 基于JDBC驱动的数据源 ...
(4)、消息队列:ActiveMQ; (5)、接口:Axis2(1.7.9); (6)、接口部署:≥Tomcat8、Jboss等; ###系统特色: (1)、前端界面经典Ribbon样式自适应,外观显示、字体等用户可自定义,win7\win10系统下完美运行; (2)、...
- **ActiveMQ-JMS规范及使用**:了解JMS规范和ActiveMQ的使用。 - **Kafka实现原理剖析**:深入理解Kafka的设计原理。 **7.7 分布式缓存分析对比** - **Memcache的原理分析及使用**:比较Memcache和Redis的不同之...
- **MySQL 5.1**:作为数据存储的数据库系统。 #### 三、安装与配置步骤 ##### 1. 安装与配置Apache James 3.0 - **下载与解压**:首先,下载并解压Apache James 3.0的压缩包到目标目录。解压后的文件夹命名为...
- **消息中间件**:集成ActiveMQ等消息传递组件。 #### 1.6 规范支持 TongWeb6.0严格遵循以下技术规范: - Java EE 6 Web Profile - JDBC - JPA - EJB 3.1 - JMS - Servlet 3.0 - JSP 2.2 - JSF 2.0 - JNDI - JAAS ...
在微服务架构中,可以通过使用集中式的 Session 存储方案(如 Redis)来实现 session 共享。这种方式可以确保不同服务实例间共享 session 数据。 **6.12 Spring Boot 中如何实现定时任务?** Spring Boot 支持通过...