`

5.4JDBC消息仓库(一)

阅读更多
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表的列信息
列名默认类型描述
IDINTEGER用于检索消息序列ID
CONTAINERVARCHAR(250)消息的目标
MSGID_PRODVARCHAR(250)消息生产者的ID
MSGID_SEQINTEGER对应消息的生产者序列ID。它和MSGID_PROD一起等价于JMS-MessageID。
EXPIRATIONBIGINT以毫秒为单位的消息的过期时间
MSGBLOB序列化消息本身

无论是队列还是主题,消息被分解并存储于ACTIVEMQ_MSGS表。
这里有一个独立的表持有持久订阅者信息和对应持久订阅这收到的最后一条消息的ID。这个信息被持在表ACTIVEMQ_ACKS,它显示与表5.4
表5.4 ACTIVEMQ_ACKS SQL表列信息
列名默认值描述
CONTAINERVARCHAR(250)消息的目的
SUB_DESTVARCHAR(250)持久消息订阅者的目的(如果使用通配符可能和container不同)
CLIENT_IDVARCHAR(250)持久消息订阅者的客户端ID
SUB_NAMEVARCHAR(250)持久订阅者的持久名字
SELECTORVARCHAR(250)持久订阅者的选择器
LAST_ACKED_IDInteger订阅者收到的最后一条消息的序列ID

为持久订阅者,LAST_ACKED_ID序列被用作指向ACTIVEMQ_MSGS和特定消息订阅者的可用消息的简易指针,它事该消息能容易地从ACTIVEMQ_MSGS表中选取。
那个锁表(lock table),即ACTIVEMQ_LOCK,被用来保证同一时间只有一个ActiveMQ代理访问数据库。如果某个ActiveMQ代理不能得到数据库锁,那个代理将不会完全初始化,并将等待锁被释放,或自己被停止。锁表的表结构在表5.5中定义:
表5.5 ACTIVEMQ_LOCK SQL列信息:
列名默认值描述
IDINTEGER
SUB_DESTVARCHAR(250)持久消息订阅者的目的(如果使用通配符可能和container不同)

现在我们已经解释了JDBC仓库使用的数据库表的结构,我们能运行一些配置JDBC消息仓库的示例,让我们进入下一节。
分享到:
评论
发表评论

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

相关推荐

    pdi-ce-5.4.0.1-130.zip

    标题中的“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框架在Maven项目中的使用。Hibernate是一个流行的Java持久化框架,它简化了数据库操作,使得开发者能够更方便地管理和操作数据库...

    搭建一个简单的Hibernate工程

    在Java开发领域,Hibernate是一个非常重要的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式处理数据库操作,极大地简化了数据访问层的代码。本教程将指导你如何搭建一个简单的Hibernate工程,以实现与...

    Spring in Action(第2版)中文版

    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...

    Spring in Action(第二版 中文高清版).part2

    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 提示用户...

    Spring in Action(第二版 中文高清版).part1

    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权威指南 很精典的学习教程,比ANT更好用

    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 ...

    spring data hadoop reference

    Hive 是一个基于 Hadoop 的数据仓库工具,可以使用 SQL 查询来检索数据。Spring Hadoop 提供了启动 Hive Server 的支持。 ##### 5.2 使用 Hive Thrift Client Hive Thrift 客户端是一种与 Hive Server 交互的方式。...

    hibernate平台搭建

    1. 下载Hibernate:首先,你需要从官方网站或通过Maven仓库下载Hibernate的JAR包,这里我们已有一个名为"hibernate jar包"的压缩文件,解压后将包含所需的Hibernate库。 2. 添加依赖:将解压后的Hibernate JAR包...

    vertica列式分析数据库[归类].pdf

    官方数据显示,VERTICA能在强配硬件下实现极高的数据装载速率,如在HP C7000刀片服务器上,曾创下在57分钟内加载5.4TB数据的记录。 VERTICA支持DML(Data Manipulation Language)操作,包括INSERT、UPDATE和DELETE...

    Spring Security 2.0.x完全中文参考文档

    用户可以从Spring Security 官方网站或者GitHub仓库下载到最新的源代码和相关文档。 ##### 2. Security命名空间配置 **2.1. 介绍** 为了简化Spring Security的配置,该框架提供了特定的安全命名空间,使得开发...

    hibernate环境搭建

    Hibernate的最新版本可以从其官方网站下载,或者通过Maven仓库添加依赖。如果你选择下载,解压后将其放在项目的lib目录下;如果使用Maven,需要在`pom.xml`文件中添加以下依赖: ```xml <groupId>org.hibernate...

    ETL实验课程笔记.pdf

    - Kettle(又称Pentaho Data Integration)是一个开源的ETL工具,用于数据抽取、转换和加载操作。 - 用户可以从官方网站或国内镜像下载最新版或稳定版的Kettle软件。 - Kettle安装简单,不需要传统意义的安装过程...

    Infor WMS CRB Studio开发手册

    - **Infor WMS (Warehouse Management System)**:仓库管理系统,旨在优化仓储作业流程,提高效率和准确性。 - **版本**: WM9.1.5 - **定制开发培训**: 由Sweeper Chen进行,职位为应用顾问,时间点在2010年7月。 #...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    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...

Global site tag (gtag.js) - Google Analytics