- 浏览: 55515 次
最新评论
ActiveMQ插件式消息仓库API的灵活性允许许多不同的实现选择。最早和更普遍的消息持久化存储实现使用JDBC。
为什么许多组织选择JDBC消息仓库的普遍原因是他们已经有管理关系数据库的专业知识。在上述的消息仓库实现中JDBC持久化在性能上绝不优越。事情的事实是许多业务已经在使用关系数据库所以他们更倾向充分利用它们。
但是使用共享数据库尤其适用于建立多代理的一个多冗余的主从拓扑。当一组ActiveMQ代理被配置来使用共享数据库,它们会尝试连接和攫取锁表中的一个锁,但是只有一个能成功并成为主。其他的代理会成为从,并将处于等待状态,不接受客户端的连接,知道主代理挂掉了。这是ActiveMQ的一般的部署方案,这将在第10章中更详细地论述。
当使用JDBC消息仓库,在ActiveMQ中使用的默认的JDBC消息驱动是Apach Derby。但是支持许多其他关系数据库。
5.4.1JDBC消息仓库支持的数据库
差不多所有带JDBC驱动的数据库都可以使用。虽然这不是一个详尽的列表,但是JDBC仓库已经显示能操作下面的的关系数据库:
●Apache Derby
●MySQL
●PostgreSQL
●Oracle
●SQL Server
●Sybase
●Informix
●MaxDB
为消息持久化一些用户宁愿关系数据库仅仅是因为关系数据库通过查询检查消息的能力。下面的章节将讨论这个主题。
5.4.2JDBC消息仓库schema
JDBC消息仓库使用有三个表构成的schema。两个用于持有消息,第三个用作锁表来确保同一时间只有一个ActiveMQ代理能访问数据库。这里有一个这三个表的详细的分解。
显示在表5.3的消息表,被默认命名为ACTIVEMQ_MSGS并且如下定义:
表5.3 ACTIVEMQ_MSGS SQL表的列信息
无论是队列还是主题,消息被分解并存储于ACTIVEMQ_MSGS表。
这里有一个独立的表持有持久订阅者信息和对应持久订阅这收到的最后一条消息的ID。这个信息被持在表ACTIVEMQ_ACKS,它显示与表5.4
表5.4 ACTIVEMQ_ACKS SQL表列信息
为持久订阅者,LAST_ACKED_ID序列被用作指向ACTIVEMQ_MSGS和特定消息订阅者的可用消息的简易指针,它事该消息能容易地从ACTIVEMQ_MSGS表中选取。
那个锁表(lock table),即ACTIVEMQ_LOCK,被用来保证同一时间只有一个ActiveMQ代理访问数据库。如果某个ActiveMQ代理不能得到数据库锁,那个代理将不会完全初始化,并将等待锁被释放,或自己被停止。锁表的表结构在表5.5中定义:
表5.5 ACTIVEMQ_LOCK SQL列信息:
现在我们已经解释了JDBC仓库使用的数据库表的结构,我们能运行一些配置JDBC消息仓库的示例,让我们进入下一节。
为什么许多组织选择JDBC消息仓库的普遍原因是他们已经有管理关系数据库的专业知识。在上述的消息仓库实现中JDBC持久化在性能上绝不优越。事情的事实是许多业务已经在使用关系数据库所以他们更倾向充分利用它们。
但是使用共享数据库尤其适用于建立多代理的一个多冗余的主从拓扑。当一组ActiveMQ代理被配置来使用共享数据库,它们会尝试连接和攫取锁表中的一个锁,但是只有一个能成功并成为主。其他的代理会成为从,并将处于等待状态,不接受客户端的连接,知道主代理挂掉了。这是ActiveMQ的一般的部署方案,这将在第10章中更详细地论述。
当使用JDBC消息仓库,在ActiveMQ中使用的默认的JDBC消息驱动是Apach Derby。但是支持许多其他关系数据库。
5.4.1JDBC消息仓库支持的数据库
差不多所有带JDBC驱动的数据库都可以使用。虽然这不是一个详尽的列表,但是JDBC仓库已经显示能操作下面的的关系数据库:
●Apache Derby
●MySQL
●PostgreSQL
●Oracle
●SQL Server
●Sybase
●Informix
●MaxDB
为消息持久化一些用户宁愿关系数据库仅仅是因为关系数据库通过查询检查消息的能力。下面的章节将讨论这个主题。
5.4.2JDBC消息仓库schema
JDBC消息仓库使用有三个表构成的schema。两个用于持有消息,第三个用作锁表来确保同一时间只有一个ActiveMQ代理能访问数据库。这里有一个这三个表的详细的分解。
显示在表5.3的消息表,被默认命名为ACTIVEMQ_MSGS并且如下定义:
表5.3 ACTIVEMQ_MSGS SQL表的列信息
列名 | 默认类型 | 描述 |
ID | INTEGER | 用于检索消息序列ID |
CONTAINER | VARCHAR(250) | 消息的目标 |
MSGID_PROD | VARCHAR(250) | 消息生产者的ID |
MSGID_SEQ | INTEGER | 对应消息的生产者序列ID。它和MSGID_PROD一起等价于JMS-MessageID。 |
EXPIRATION | BIGINT | 以毫秒为单位的消息的过期时间 |
MSG | BLOB | 序列化消息本身 |
无论是队列还是主题,消息被分解并存储于ACTIVEMQ_MSGS表。
这里有一个独立的表持有持久订阅者信息和对应持久订阅这收到的最后一条消息的ID。这个信息被持在表ACTIVEMQ_ACKS,它显示与表5.4
表5.4 ACTIVEMQ_ACKS SQL表列信息
列名 | 默认值 | 描述 |
CONTAINER | VARCHAR(250) | 消息的目的 |
SUB_DEST | VARCHAR(250) | 持久消息订阅者的目的(如果使用通配符可能和container不同) |
CLIENT_ID | VARCHAR(250) | 持久消息订阅者的客户端ID |
SUB_NAME | VARCHAR(250) | 持久订阅者的持久名字 |
SELECTOR | VARCHAR(250) | 持久订阅者的选择器 |
LAST_ACKED_ID | Integer | 订阅者收到的最后一条消息的序列ID |
为持久订阅者,LAST_ACKED_ID序列被用作指向ACTIVEMQ_MSGS和特定消息订阅者的可用消息的简易指针,它事该消息能容易地从ACTIVEMQ_MSGS表中选取。
那个锁表(lock table),即ACTIVEMQ_LOCK,被用来保证同一时间只有一个ActiveMQ代理访问数据库。如果某个ActiveMQ代理不能得到数据库锁,那个代理将不会完全初始化,并将等待锁被释放,或自己被停止。锁表的表结构在表5.5中定义:
表5.5 ACTIVEMQ_LOCK SQL列信息:
列名 | 默认值 | 描述 |
ID | INTEGER | 为 |
SUB_DEST | VARCHAR(250) | 持久消息订阅者的目的(如果使用通配符可能和container不同) |
现在我们已经解释了JDBC仓库使用的数据库表的结构,我们能运行一些配置JDBC消息仓库的示例,让我们进入下一节。
发表评论
文章已被作者锁定,不允许评论。
-
三次样条曲线
2014-04-11 17:33 1849原文地址: http://www.math ... -
APPLE PUBLIC SOURCE LICENSE (APSL)
2013-05-23 13:47 0原文地址:http://www.publicsource.ap ... -
翻译的一些说明
2013-03-07 14:48 0翻译的一些说明: 1,对于一些专有名词如speex,api不过 ... -
ALSA driver 安装指南(中文版)
2012-12-29 11:28 0ALSA 驱动替代了OSS/Free驱动。从版本0.4.0开始 ... -
ALSA driver 安装指南(英文版)
2012-12-28 14:30 0Advanced Linux Sound Architectu ... -
Addons
2013-01-08 10:37 1009Addons是动态链接共享对象。它们能提供和c及c++库的粘合 ... -
8.4和Apache Geronimo集成
2013-04-16 20:01 1544Apache Geronimo应用服务器是在应用服务器许多方面 ... -
8.3和Jetty集成
2013-04-16 19:58 1117Jetty web container已经存在了很长时间并使可 ... -
8.2和Apache Tomcat集成
2013-03-11 21:54 1484Apache Tomcat是可论证的当今使用最广的可用的Jav ... -
8.1web应用示例
2013-03-11 21:54 11078.1web应用示例 为了在本章中演示集成示例,一个web应用 ... -
8.0将ActiveMQ集成到应用服务器
2013-03-11 21:54 939本章包括下面内容: ■ ... -
7.5小结
2013-03-11 21:53 617在本章中,你已经看到了ActiveMQ如何能被看做不仅是一个独 ... -
7.4使用Spring编写JMS客户端
2013-03-11 21:53 1472ActiveMQ使用Spring框架来ease client- ... -
7.3实现request/reply with JMS
2012-12-07 16:12 1474如前面章节中描述的,m ... -
7.2使用Spring嵌入ActiveMQ
2012-12-06 15:01 1665ActiveMQ is developed with Spri ... -
7.1使用Java嵌入ActiveMQ
2012-12-05 15:59 1995虽然今天的大多数开发者使用一个框架编写他们的应用,但是用最简单 ... -
7.0建立带ActiveMQ的Java程序
2012-12-05 13:47 1075本章包括: ■在Java应用程序中嵌入ActiveMQ ■使用 ... -
6.5总结
2012-12-05 11:33 711在这一章中,ActiveMQ被从无身份验证no-authent ... -
6.4基于证书的安全
2012-12-05 11:10 1447在本章前面部分,我们描述了ActiveMQ插件被用来验证客户端 ... -
ActiveMQ in action 1~4章
2012-11-27 16:25 810http://jfires.iteye.com/
相关推荐
标题中的“pdi-ce-5.4.0.1-130.zip”指的是Pentaho Data Integration(简称PDI)的一个社区版本,版本号为5.4.0.1,构建编号为130。PDI,也常被称为Kettle,是一款强大的开源ETL(Extract, Transform, Load)工具,...
**标题解析:**“hibernate Maven仓库资源”这一标题表明了我们关注的是关于Hibernate框架在Maven项目中的使用。Hibernate是一个流行的Java持久化框架,它简化了数据库操作,使得开发者能够更方便地管理和操作数据库...
在Java开发领域,Hibernate是一个非常重要的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式处理数据库操作,极大地简化了数据访问层的代码。本教程将指导你如何搭建一个简单的Hibernate工程,以实现与...
7.2.3根据ldap仓库进行身份验证 7.3控制访问 7.3.1访问决策投票 7.3.2决定如何投票 7.3.3处理投票弃权 7.4保护web应用程序 7.4.1代理springsecurity的过滤器 7.4.2处理安全上下文 7.4.3提示用户登录 7.4.4...
7.2.3 根据LDAP仓库进行身份验证 7.3 控制访问 7.3.1 访问决策投票 7.3.2 决定如何投票 7.3.3 处理投票弃权 7.4 保护Web应用程序 7.4.1 代理Spring Security的过滤器 7.4.2 处理安全上下文 7.4.3 提示用户...
7.2.3 根据LDAP仓库进行身份验证 7.3 控制访问 7.3.1 访问决策投票 7.3.2 决定如何投票 7.3.3 处理投票弃权 7.4 保护Web应用程序 7.4.1 代理Spring Security的过滤器 7.4.2 处理安全上下文 7.4.3 提示用户...
Maven权威指南是一本关于Apache Maven的书。 Copyright 1. Creative Commons BY-ND-NC Foreword: Beta 0.16 Preface 1. How to Use this Book 2. Your Feedback 3. Font Conventions 4. Maven Writing ...
Hive 是一个基于 Hadoop 的数据仓库工具,可以使用 SQL 查询来检索数据。Spring Hadoop 提供了启动 Hive Server 的支持。 ##### 5.2 使用 Hive Thrift Client Hive Thrift 客户端是一种与 Hive Server 交互的方式。...
1. 下载Hibernate:首先,你需要从官方网站或通过Maven仓库下载Hibernate的JAR包,这里我们已有一个名为"hibernate jar包"的压缩文件,解压后将包含所需的Hibernate库。 2. 添加依赖:将解压后的Hibernate JAR包...
官方数据显示,VERTICA能在强配硬件下实现极高的数据装载速率,如在HP C7000刀片服务器上,曾创下在57分钟内加载5.4TB数据的记录。 VERTICA支持DML(Data Manipulation Language)操作,包括INSERT、UPDATE和DELETE...
用户可以从Spring Security 官方网站或者GitHub仓库下载到最新的源代码和相关文档。 ##### 2. Security命名空间配置 **2.1. 介绍** 为了简化Spring Security的配置,该框架提供了特定的安全命名空间,使得开发...
Hibernate的最新版本可以从其官方网站下载,或者通过Maven仓库添加依赖。如果你选择下载,解压后将其放在项目的lib目录下;如果使用Maven,需要在`pom.xml`文件中添加以下依赖: ```xml <groupId>org.hibernate...
- Kettle(又称Pentaho Data Integration)是一个开源的ETL工具,用于数据抽取、转换和加载操作。 - 用户可以从官方网站或国内镜像下载最新版或稳定版的Kettle软件。 - Kettle安装简单,不需要传统意义的安装过程...
- **Infor WMS (Warehouse Management System)**:仓库管理系统,旨在优化仓储作业流程,提高效率和准确性。 - **版本**: WM9.1.5 - **定制开发培训**: 由Sweeper Chen进行,职位为应用顾问,时间点在2010年7月。 #...
5.4 关于问题的问题 119 5.5 关于数据的问题 121 5.6 建立逻辑表达式 126 5.7 小结 136 第6章 SQL执行计划 137 6.1 解释计划 137 6.1.1 使用解释计划 137 6.1.2 理解解释计划可能达不到目的的方式 143 6.1.3...