`

5.3AMQ消息仓库

阅读更多
AMQ消息仓库,像KahaDB一样,是一个可靠持久化事务性日报(为了幸存于系统崩溃)和高性能索引的组合,它是当消息生产量是应用的主要需求的时候的最佳选择。但是因为它为每个索引使用两个独立的文件,并且每个目标有一个索引,所以当你打算为每个代理使用成千上万的队列,AMQ消息仓库不应该被使用。同时,如果ActiveMQ代理关闭得不干净,恢复可能会很慢。这是所有的索引需要被重建,它们需要代理遍历所有的数据日志来准确地再次建立索引。在下一节,我们会清晰地解析类似于KahaDB组件的AMQ消息仓库的内部构件。
5.3.1AMQ消息仓库内部构件
AMQ消息仓库的主要组件和KahaDB消息仓库类似,包括缓存,消息数据日志和为了进入数据日志的引用仓库。图5.5提供了一个AMQ消息仓库的顶层图。
这个图提供了AMQ消息仓库三个独特部分的视图:
●消息数据日志--作为消息日报
●缓存--当消息被存到数据日之后为了快速检索它在内存中保持消息。
●索引仓库--它保存着日志中的消息的索引,消息以他们的消息ID被编入索引。
理解ActiveMQ消息仓库使用的基于文件的目录结构是重要的。它有助于配置和鉴别使用ActiveMQ时的问题。
5.3.2AMQ消息仓库目录结构
当你启动一个配置了AMQ消息仓库的ActiveMQ,一个用于保存持久化消息的目录会被自动创建。AMQ消息仓库日志包含了为所有运行于机器的代理准备的子目录。因为这个原因,强烈建议每个代理使用一个独一无二的名字。在ActiveMQ的默认配置中,代理名是localhost,它需要被改成其他独一无二的名字。目录结构在图5.6展示--AMQ目录结构。
接下来的目录和文件能一个ActiveMQ代理的数据目录内找到:
●一个lock文件--确保同一时间只有一个代理能够存取这个数据。
●一个temp-storage 目录--被用来存储那些不再能被存储在代理内存中的非持久化消息。这些消息通常等待发送到一个缓慢的消费者。
●kr-store--这个目录结构被用于AMQ消息仓库的索引部分。它默认使用Kaha索引仓库(Kaha是ActiveMQ核心库的一部分)来编写索引和存储数据日志中的消息的索引。kr-store 有两个不同的部分:
* 数据目录--包含了为索引存储于数据日志中的消息的索引和集合。如果代理没有被干净地关掉,这个数据目录作为数据恢复的一部分被删除和重建。在启动代理之前你能通过手动删除这个目录强制恢复。
*状态目录--保存关于持久主题消费者的信息。日志本身不保存消费者的信息,所以当它被恢复的时候它不得不首先检索持久化订阅者来准确地重建它的数据库。
●日志目录--问数据日志包含日志文件,和一个保存元标签信息的数据控制文件。
●归档目录--仅当归档被激活的时候可用。它的默认位置能在日志旁找到。它可以用一个单独的位置或磁盘,归档是用来从 日报目录存储数据日志的,这里日志被转移而不是删除。这使以后从归档重发消息成为可能。为了重发消息,移动归档数据日志(或者子集)到一个新的日报目录并启动一个指向这个目录位置的新代理。它将自动重发位于日报中的数据日志。
现在AMQ消息仓库的基础知识已被讨论,下一步是看它的配置。
5.3.3配置AMQ消息仓库
AMQ仓库配置允许用户修改它的关于索引基础,检查点间隔和日报数据文件的大小的基础行为。这些项目和更多的配置能通过使用属性来自定义。AMQ仓库的关键属性在下表中展现:
属性名默认值描述信息
directoryactivemq-data被AMQ消息仓库使用的目录路径
useNIOtrueNIO提供到系统磁盘上更快速的连写通
syncOnWritefalse每一次写操作都同步到磁盘
syncOnTransactiontrue每个事务同步到磁盘
maxFileLength32mb在使用新文件以前消息日报数据文件的最大大小
persistentIndextrue持久化索引被使用,如果设为false,一个内存内部哈希图被使用
maxCheckpointMessageAddSize4kb在写到磁盘之前为一个事务使用的最大内存
cleanupInterval3000(ms)在检查哪个日报数据文件还在被使用前的延时
checkpointInterval20000(ms)在移动缓存消息ID到引用仓库索引前的延时
indexBinSize1024为索引使用的散列容器的初始数量
indexMaxBinSize16384散列容器使用的最大数量
directoryArchivearchive被AMQ消息仓库用来存放归档的日报文件的目录路径
archiveDataLogsfalse如果为true,日报文件被归档而不是被删除
recoverReferenceStoretrue如果代理没有被干净地停掉时恢复引用仓库;this errs on the side of extreme caution
forceRecoverReferenceStorefalse强制引用仓库的恢复

在ActiveMQ XML配置文件里有一个使用表中参数的例子:
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<broker xmlns="http://activemq.apache.org/schema/core">
<persistenceAdapter>
<amqPersistenceAdapter
directory="target/Broker2-data/activemq-data"
syncOnWrite="true"
indexPageSize="16kb"
indexMaxBinSize="100"
maxFileLength="10mb" />
</persistenceAdapter>
</broker>
</beans>
这仅是使用有效属性为AMQ仓库自定义配置的一个小示例。
AMQ仓库,像KahaDB仓库一样,使用户能快速建立和运行起来,因为没有对其它数据库的额外依赖。但是当你想要运行一个ActiveMQ代理并使用已建立的关系数据库,你需要使用JDBC消息仓库。
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    AMQ 实现消息队列 基本DEMO

    AMQ(ActiveMQ)是Apache软件基金会开发的一款开源消息中间件,它实现了多种消息协议,如OpenWire、STOMP、XMPP、AMQP等,能够有效地支持分布式系统中的异步通信。消息队列是一种设计模式,它允许应用程序通过将消息...

    java通过AMQ通讯

    Java通过AMQ通讯是一种在分布式系统中实现消息传递的技术,主要使用了Apache ActiveMQ(简称AMQ)这一开源的消息中间件。AMQ是基于Java Message Service(JMS)规范的,它提供了一种高效、可靠的平台,使得应用程序...

    amq-examples:此存储库包含一组与 Red Hat AMQ 消息传递套件组件一起使用的示例

    该存储库包含一组与 Red Hat AMQ 消息传递套件组件一起使用的示例。 :股票报价应用程序展示了来自浏览器的rhea javascript 客户端、websockets 和 TLS 连接 :简单Hello World的NodeJS应用特色rhea JavaScript...

    AMQ样例,参考

    在“AMQ样例”的标签下,我们可以期待这个WebActiveMQ_Demo包含了一系列示例代码、配置文件或者教程,帮助用户了解如何创建和管理消息、如何设置消费者和生产者、以及如何实现消息的可靠传输和持久化等。 在...

    AMQ接收与发送

    总结来说,"AMQ接收与发送"涵盖了ActiveMQ中的核心概念和操作,包括消息的生产和消费、接收与发送端的分离、MQ控制台的使用,以及如何在实际环境中配置和运行这些组件。理解这些知识点有助于开发者构建可靠、高效的...

    amq最近安装包

    阿帕奇ActiveMQ,简称AMQ,是一款由Apache软件基金会开发的开源消息中间件。它遵循开放消息中间件协议(Open Message Broker Protocol),并实现了Java消息服务(JMS)标准,提供可靠的消息传递功能,用于在分布式...

    spring整合amq

    标题中的“spring整合amq”指的是将Spring框架与ActiveMQ(AMQ)集成,以便在Spring应用程序中使用消息队列进行通信。ActiveMQ是Apache软件基金会的一个开源项目,它是一个功能丰富的消息代理,实现了多种消息协议,...

    10Gtek AMQ10-SR4-M1 (JH2)V1.1.pdf

    【10Gtek AMQ10-SR4-M1(JH2)V1.1.pdf】是一款由10Gtek公司推出的40GBASE-SR QSFP+光收发器规格书,主要针对高速网络连接,特别是数据中心和高性能计算环境。这款产品支持40GBASE-SR4和QDR应用,符合QSFP+电气多源...

    springboot+amq+javamail+maven

    在"springboot+amq+javamail+maven"的项目中,这些技术是如何整合的呢? 1. **SpringBoot与ActiveMQ集成**:SpringBoot可以通过添加对应的依赖来集成ActiveMQ。在配置文件中,我们可以设置ActiveMQ服务器的相关参数...

    AMQ28-SR4-M1-V1.0

    ### AMQ28-SR4-M1-V1.0 光模块关键技术知识点解析 #### 一、产品概述 AMQ28-SR4-M1-V1.0 是一种高性能的100G QSFP28 SR4 光模块,适用于短距离传输(如数据中心内部连接),最大传输距离可达100米(在OM4多模光纤...

    简单的activemq点对点的同步消息模型

    ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循开放消息传递协议(Open Message Broker Protocol,即AMQP)和Java消息服务(Java Message Service,JMS)规范,用于实现应用程序之间的异步通信和数据...

    ActiveMQ Web开发 amq.js

    最新在做ActiveMQ Web端开发时,绕了很多路找到了这个插件,小编在这里就贡献了给爱学习小伙伴用。

    IBMMQ消息序号-顺序

    此外,MQ的日志文件中会出现错误记录,例如AMQ9526错误,提示“通道的消息序号出错”。 #### 6. 如何处理消息序号不一致的问题? 处理消息序号不一致问题的方法主要有两种: - **方法1**:在通道发送端使用MQSC...

    学习使用WebSphere MQ for Java编程

    WebSphere MQ for Java 通常会与 WebSphere MQ 服务器一起安装,每个平台都有对应的安装指南,如 AIX 的《WebSphere MQ for AIX, V5.3 Quick Beginnings》。关键的 Java 库文件包括 `com.ibm.mq.jar` 和 `...

    rabbitmq代理配置和编码1

    对于`SEND`帧,消息会被发送到`amq.topic`交换机,同样使用`&lt;topicName&gt;`作为`routingKey`。这意味着消息将根据主题交换机的规则进行路由,允许消息被多个匹配`routingKey`的队列接收。 在RabbitMQ中,理解和正确...

    AMQ-Scripts:脚本的全面存储库,可提高AMQ的生活质量

    AMQ脚本这是所有脚本的万能库,可提高“中游戏/生活质量的所有脚本。用法可以通过将大多数脚本导入浏览器扩展程序来使用它们,例如用于.js文件的和用于.css文件的 。 在特定项目的文件夹中可以找到更多信息。 design...

    CentOS环境安装配置AMQ集群及zookeeper集群

    ### CentOS环境下AMQ集群与Zookeeper集群安装配置详解 #### 一、概述 本文将详细介绍如何在CentOS环境中安装配置ActiveMQ (AMQ) 集群和Zookeeper集群。这两种集群技术对于分布式系统的消息传递和服务协调至关重要...

    amq-spring-jms.pdf

    Apache ActiveMQ是一款开源的消息中间件,它符合JMS 1.1规范,并且是Apache软件基金会的一个项目,旨在实现不同语言和平台之间的基于标准的、面向消息的应用程序集成。 ActiveMQ支持多种传输协议和编码格式。其默认...

    登录linux执行命令

    本程序“登录Linux执行命令”旨在实现一个自动化流程,通过连接到AMQ(Advanced Message Queuing Protocol)消息队列,被动接收消息,并在Linux环境下执行预设的指令。这一过程涉及到的主要技术包括AMQ的交互、SSH...

    ActiveMQ(AMQ)单浏览器AJAX多页面客户端的支持(clientId)

    ActiveMQ(AMQ)是Apache软件基金会开发的一个开源消息中间件,它支持多种协议,包括OpenWire、STOMP、MQTT、AMQP等,广泛应用于分布式系统中的异步通信和解耦。在Web应用程序中,AJAX(Asynchronous JavaScript and...

Global site tag (gtag.js) - Google Analytics