`

5.4JDBC消息仓库(二)

阅读更多
5.4.3配置JDBC消息仓库
默认JDBC消息仓库配置是简单的。如前面陈述的,默认的JDBC仓库在代理配置中使用Apache Derby,如下:<beans>
<broker brokerName="test-broker"
persistent="true"
xmlns="http://activemq.apache.org/schema/core">
<persistenceAdapter>
<jdbcPersistenceAdapter dataDirectory="activemq-data"/>
</persistenceAdapter>
</broker>
</beans>
这个之前的配置为ActiveMQ代理以JDBC消息仓库(默认使用Apach Derby)配置持久化适配器并且设置被嵌入式Apach Derby实例使用的数据目录。
JDBC持久化适配器(JDBC消息仓库上的接口)中一个关键属性是dataSource 属性。这个属性定义了从哪个工厂进行关系数据库的连接。配置dataSource对象使JDBC持久化适配器能使用物理数据库而不是默认的。这里有一个使用MySql 数据库配置JDBC消息仓库的ActiveMQ配置示例:
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<broker brokerName="test-broker"
persistent="true"
xmlns="http://activemq.apache.org/schema/core">
<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#mysql-ds"/>
</persistenceAdapter>
</broker>
<bean id="mysql-ds"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url"
value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
<property name="username" value="activemq"/>
<property name="password" value="activemq"/>
<property name="maxActive" value="200"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
</beans>
之前的示例使用Apache Commons DBCP BasicDataSource为连接池包装了MySQL JDBC驱动。在这个示例中,driverClassName是使用的JDBC驱动。一些你能配置的属性被直接发送到数据库驱动它本身。例如,maxActive是一个MySQL数据库连接器的属性,它告诉数据库同时持有多少个活跃的连接。
作为一个对比,这是由一个使用Oracle数据库的配置示例:
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<broker brokerName="test-broker"
persistent=true
xmlns="http://activemq.apache.org/schema/core">
<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#oracle-ds"/>
</persistenceAdapter>
</broker>
<bean id="oracle-ds" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:AMQDB"/>
<property name="username" value="scott"/>
<property name="password" value="tiger"/>
<property name="maxActive" value="200"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
</beans>
这个示例使用 Apache Commons DBCP BasicDataSource为连接池包装Oracle JDBC驱动。
现在JDBC消息仓库的一些配置示例已经展示了,你可能要问,什么时候最好使用这种类型的持久化?

5.4.4和ActiveMQ日报一起使用JDBC消息仓库
虽然JDBC消息仓库的性能并不完美,但是它能通过使用ActiveMQ日报来提高。日报确保了JMS事务的相容性。因为它包含了缓存技术的快速消息写操作,它能显著地提高ActiveMQ代理的性能。
这里有一个在JDBC(aka journaled JDBC)中使用日报的配置示例。在这个示例中Apache Derby正在被使用。
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<broker brokerName="test-broker"
xmlns="http://activemq.apache.org/schema/core">
<persistenceFactory>
<journalPersistenceAdapterFactory
journalLogFiles="4"
journalLogFileSize="32768"
useJournal="true"
useQuickJournal="true"
dataSource="#derby-ds"
dataDirectory="activemq-data" />
</persistenceFactory>
</broker>
<bean id="derby-ds" class="org.apache.derby.jdbc.EmbeddedDataSource">
<property name="databaseName" value="derbydb"/>
<property name="createDatabase" value="create"/>
</bean>
</beans>
日报能被任何JDBC数据源使用,但是知道它应该和不应该在哪些时候使用是重要的。
在使用基础的JDBC时消息仓库日报提供了相当大的性能优点,特别是在同地部署JDBC数据库和ActiveMQ代理。唯一不可能使用日报的时候是在一个共享数据库master/slave配置中。因为从master来的消息可能在提交到数据库之前被本地存储于日报中,若在这个配置中使用日报,如果master挂了可能导致丢失消息因为日报没有被复制。
我们通过配置示例已经讲解了在关系数据库中的消息仓库。在下一节我们将看看内存仓库,它不会存留消息。
分享到:
评论
发表评论

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

相关推荐

    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仓库资源

    4. **配置Hibernate**:除了添加依赖,还需要在`persistence.xml`文件中配置Hibernate,包括数据源、实体扫描路径、JDBC驱动等信息。 5. **使用Hibernate API**:创建SessionFactory,然后通过SessionFactory创建...

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

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

    Infor WMS CRB Studio开发手册

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

    hibernate平台搭建

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

    ETL实验课程笔记.pdf

    - 以MySQL数据库为例,首先需要将MySQL的JDBC驱动(如mysql-connector-java-5.1.26-bin.jar)添加到Kettle的lib目录中。 - 然后在Spoon中选择创建新的数据库资源库,并创建数据库连接,输入连接信息并测试连接成功...

    搭建一个简单的Hibernate工程

    二、环境准备 1. Java开发环境:确保已安装JDK,并配置好环境变量。 2. Maven或Gradle:Hibernate项目通常使用构建工具管理依赖,这里我们以Maven为例。确保已安装Maven,并配置好全局Maven仓库。 3. 数据库:选择一...

    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的配置,该框架提供了特定的安全命名空间,使得开发...

    spring data hadoop reference

    #### 二、Spring 和 Hadoop ##### 2.1 使用 Spring Hadoop 命名空间 Spring Hadoop 支持通过 XML 配置文件中的命名空间来配置 Hadoop 相关组件。这使得配置变得更加简洁明了,例如配置 Job 或者 FileSystem 等组件时...

    Maven权威指南 很精典的学习教程,比ANT更好用

    5.4. 配置Jetty插件 5.5. 添加一个简单的Servlet 5.6. 添加J2EE依赖 5.7. 小结 6. 一个多模块项目 6.1. 简介 6.1.1. 下载本章样例 6.2. simple-parent 项目 6.3. simple-weather 模块 6.4. simple-...

    hibernate环境搭建

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

    spring security 参考手册中文版

    Maven仓库 21 Spring框架 22 2.4.2 Gradle 23 Gradle存储库 23 使用Spring 4.0.x和Gradle 24 2.4.3项目模块 25 核心 - spring-security-core.jar 25 远程处理 - spring-security-remoting.jar 25 Web - spring-...

Global site tag (gtag.js) - Google Analytics