`
baobeituping
  • 浏览: 1068495 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

activeMQ数据库配置

阅读更多

这文章是在网上看到的,还没来得及试验,先拿下来再说。 也不知道是不是原创,网址如下http://zhaiyl.spaces.live.com/blog/cns!939A197D2798715B!125.entry

 

ActiveMQ很好的支持了消息的持久性(Persistence)。消息持久性对于可靠消息传递来说应该是一种比较好的方法,有了消息持久化,即使发送者和接受者不是同时在线或者消息中心在发送者发送消息后宕机了,在消息中心重新启动后仍然可以将消息发送出去,如果把这种持久化和 ReliableMessaging结合起来应该是很好的保证了消息的可靠传送。 消息持久性的原理很简单,就是在发送者将消息发送出去后,消息中心首先将消息存储到本地数据文件、内存数据库或者远程数据库等,然后试图将消息发送给接收者,发送成功则将消息从存储中删除,失败则继续尝试。消息中心启动以后首先要检查制定的存储位置,如果有未发送成功的消息,则需要把消息发送出去。

 

 对于ActiveMQ,消息的持久化同样是很简单的,仅仅通过配置信息就可以实现。这里主要介绍两种不同的持久化方法。

 

1. High performance journal

  这是ActiveMQ基于开源的HOWL(High-speed ObjectWeb Logger),将HOWL扩展为可以存储任意大小的消息(HOWL只能存储固定大小的记录),实现的一种消息持久化方法。它可以快速的将消息存储在本地文件中,且这种文件是以一种类似数据库的方式管理的。这样,如果你发送了10,000个消息,可能只有很少数的消息没有发送成功,当达到一个 checkpoint的时候,journal将一批未成功消息通过JDBC存储到数据库,这样避免了多次的数据库操作,很大程度上提高了性能并且保证了可靠性。

 

 配置方法非常简单,就是无需配置,呵呵。

ActiveMQ默认支持Journal,在activemq.xml配置文件中,可以找到如下信息:

 Code:

<persistenceadapter>

<journaledjdbc journallogfiles="5" journallogfilesize="1024"datadirectory="${activemq.home}/activemq-data">

</journaledjdbc>

</persistenceadapter>

 

这里可以改动的就是journalLogFiles,这个属性是制定默认创建几个数据文件来存储消息。journalLogFileSize为数据文件大小,默认为20MB。dataDirectory指向了存储数据文件的位置。

 

 2. 使用MySQL进行消息持久化

ActiveMQ持久几乎所有数据库(因为是通过JDBC把消息存储到数据库的)。方法同样简单,就是配置信息稍微有点变化。 Code:

<persistenceadapter>

<jdbcpersistenceadapter datasource="#mysql-ds">

</jdbcpersistenceadapter></persistenceadapter> 

 其中dataSource指定了所用数据源的名字为mysql-ds。需要在activemq.xml文件中的<broker>标签之外配置数据源。下面是MySql的配置信息。

 Code:

<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>

<property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"></property>

<property name="username" value="gos2"></property>

<property name="password" value="gos2"></property>

<property name="poolPreparedStatements" value="true"></property>

</bean> 

 大多数信息的含义是很清楚的,需要注意的是relaxAutoCommit需要设置为true,不知道什么含义。不同数据库的配置信息可能有些不一样,还需要自己再查一下。 配置文件修改好之后,将所选数据库的JDBC驱动包下载之后放到%ACTIVEMQ_HOME%\lib\下,然后启动%ACTIVEMQ_HOME%\bin\activemq.bat。

 

需要注意的一个地方是:ActiveMQ使用MySQL持久化消息是,需要首先创建数据库,上面配制信息中可以看到,数据库的名字是activemq。启动activemq.bat之后,会在数据库中创建表。

 

如果使用MySQL4.1,出现了max key lengh...错误,原因就是ActiveMQ创建的表使用三个字段的组合作为主键,每个字段时varchar(250),加起来是750个 varchar,如果按一个verchar2个字节(据说如果采用utf-8编码,可能会是3个字节??),超出了MySQL允许的1024字节。我曾试图更改MySQL的设置,没有成功,最后手动的那控制台打印出来的SQL语句中的250都换成了100,创建了这个表,然后把其他创建的表删掉。然后重新启动activemq.bat,成功!!!:)

 

如果使用的是mysql5.0则可以直接启动成功.

 

这样,消息中心具有了消息持久化功能,还需要做的就是消息发送者在发送消息的时候要采用JMS中的PERSISTENT模式发送消息。

示例代码如下:

 Code:

MessageProducer producer = session.createProducer(destination); producer.setDeliveryMode(DeliveryMode.PERSISTENT); / / 如果不想持久化可用下面语句

//producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

 这样,你的消息无论怎么发,都可以成功了。

分享到:
评论

相关推荐

    activemq5配置文档

    - **JDBC**:ActiveMQ也支持使用数据库进行持久化,这适用于大规模部署和高可用性需求。 - **File System**:另一种选项是直接将消息存储在文件系统,适合小型应用。 4. **ActiveMQ与短信服务的整合**: - **...

    ActiveMQ Master/Slave 主从配置

    在activemq数据库中创建了三张表:ACTIVEMQ_ACKS、ACTIVEMQ_LOCK和ACTIVEMQ_MSGS,它们分别用于存储消息确认信息、锁信息和消息内容。 配置Master/Slave环节中,需要修改ActiveMQ配置文件activemq.xml,在其中添加...

    ActiveMQ的activemq.xml详细配置讲解

    对于与数据库的集成,如`activemq数据库,验证持久化标准配置.txt`所示,ActiveMQ支持使用JDBC进行持久化,确保在故障恢复时数据的完整性。 总之,`activemq.xml`配置文件是管理ActiveMQ核心行为的核心,通过细致地...

    spring配置activemq详解

    在"spring配置activemq详解"这个主题中,我们将探讨如何在Spring项目中配置和使用ActiveMQ。以下是对这个主题的详细说明: 1. **配置ActiveMQ**: - 首先,我们需要在项目中引入ActiveMQ的相关依赖,这通常通过在`...

    activemq-5.15+mysqljdbc配置.zip

    总结来说,"activemq-5.15+mysqljdbc配置.zip"提供了ActiveMQ的一个定制化版本,它集成了MySQL数据库作为持久化存储,并使用Durid作为连接池。这种配置适用于那些需要强大数据持久化和恢复能力的场景,但也需要对...

    ActiveMQ配置Mysql8为持久化方式所需Jar包.rar

    总结,配置ActiveMQ使用MySQL 8作为持久化方式涉及修改配置文件、添加必要的Jar包依赖,并确保数据库连接的正确性。这不仅增强了消息传递的可靠性,还便于数据库的管理和维护。在实际操作中,务必根据自己的环境调整...

    spring+activeMQ 嵌入式配置 完整demo(包含jar包)

    本教程将详细讲解如何在Spring应用中进行ActiveMQ的嵌入式配置,并提供一个完整的示例,包括所需的jar包。 首先,ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它实现了Java消息服务(JMS)规范,允许应用...

    ActiveMQ5.12.1 安装与配置.docx

    1. **数据库配置** - 本文档提到使用MySQL作为ActiveMQ的持久化存储。首先,需要在MySQL中创建一个用户账号并授予必要的权限。 ```sql CREATE USER 'activemq'@'%' IDENTIFIED BY 'activemq'; GRANT ALL ...

    ActiveMQ消息服务器 v5.17.6.zip

    2. **配置**:配置文件默认为conf/activemq.xml,可根据需求调整队列、主题、网络连接等设置。 3. **创建和消费消息**:使用JMS API或者ActiveMQ提供的客户端库,可以创建生产者发送消息,消费者接收消息。 4. **...

    activeMQ使用JDBC所需要的jar包

    本主题将详细讲解在ActiveMQ中使用JDBC持久化所需的jar包,以及如何进行配置。 首先,我们要明确的是,ActiveMQ内置了一个基于KahaDB的默认持久化机制,但用户可以根据需求选择JDBC持久化。JDBC持久化需要以下关键...

    自己写的ActiveMQ的Demo例子

    2. **持久化到数据库**:为了提高可靠性,ActiveMQ 还可以配置为将消息存储在关系型数据库(如 MySQL 或 PostgreSQL)中。同样,这需要在 `activemq.xml` 配置文件中进行设置,包括连接数据库的详细信息以及具体的...

    activeMQ mysql 持久化

    1. **安装和配置MySQL**:首先,你需要在服务器上安装MySQL数据库,并创建一个用于ActiveMQ的特定数据库和用户。 2. **配置ActiveMQ**:在ActiveMQ的配置文件(通常是`activemq.xml`)中,你需要指定使用JDBC持久化...

    activemq+springMVC+mysql 应用实例(完整工程,创建数据库后可用).zip

    eclipse导入后,创建数据库,配置tomcat后启动即可使用 创建数据库的语句如下: create database activemq; use activemq; create table user ( id varchar(64) not null primary key, username varchar(64), ...

    activemq-5.15.15 JDBC持久化mysql8.0+的activemq.xml.pdf

    总结来说,这个配置文件展示了如何配置ActiveMQ 5.15.15使用JDBC和MySQL 8.0+进行消息持久化,以及解决XML中特殊字符转义的问题,以确保ActiveMQ能够正确地连接并使用MySQL数据库存储和检索消息。这种配置适用于需要...

    ActiveMQ的持久化(数据库)[归类].pdf

    例如,可以配置 ActiveMQ 在特定条件下批量写入数据库,以减少数据库访问的频率。 总之,理解并正确配置 ActiveMQ 的持久化机制是保障消息队列系统稳定性和数据完整性的关键步骤。开发者应根据实际的业务需求,权衡...

    ActiveMQ基本使用与优化

    ActiveMQ安装与配置 - **下载安装**:从官方站点[http://activemq.apache.org/download.html](http://activemq.apache.org/download.html)下载安装包。 - **权限配置**:在Linux环境下,通过`chmod +x`命令赋予运行...

    linux环境下ActiveMQ持久化、集群环境搭建详解

    ActiveMQ 持久化是指将消息队列持久化到数据库或文件中,以便在断电或崩溃后恢复消息队列。可以使用 Apache ActiveMQ 的持久化机制,例如使用 KahaDB 或 AMQP 等。 集群环境 ActiveMQ 集群环境是指多个 ActiveMQ ...

    activemq消息持久化所需Jar包

    3. 配置ActiveMQ的配置文件(通常是`conf/activemq.xml`),设置持久化策略,例如在KahaDB中,你需要配置`&lt; PersistenceAdapter &gt;`元素。 4. 如果使用数据库,还需要在配置文件中添加数据库连接信息,并确保数据库...

    ActiveMQ消息服务器 v6.0.1.zip

    2. 配置管理:通过Web控制台(默认地址:http://localhost:8161/admin/)进行配置和监控,或者修改`conf/activemq.xml`进行高级设置。 3. 创建和管理资源:在Web控制台或通过API创建消息队列、主题等,并管理消费者...

Global site tag (gtag.js) - Google Analytics