zoukankan      html  css  js  c++  java
  • ActiveMq持久化数据

    A:持久化为文件

         这个你装ActiveMQ时默认就是这种,只要你设置消息为持久化就可以了。涉及到的配置和代码有

    <persistenceAdapter>
    <kahaDB directory="${activemq.base}/data/kahadb"/>
    </persistenceAdapter>

    producer.Send(request, MsgDeliveryMode.Persistent, level, TimeSpan.MinValue);

    B:持久化为MySql

         你首先需要把MySql的驱动放到ActiveMQ的Lib目录下,我用的文件名字是:mysql-connector-java-5.0.4-bin.jar

         接下来你修改配置文件

    <persistenceAdapter>
    <jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#derby-ds"/>
    </persistenceAdapter>

    在配置文件中的broker节点外增加

    复制代码
    <bean id="derby-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>
    复制代码

    从配置中可以看出数据库的名称是activemq,你需要手动在MySql中增加这个库。

    然后重新启动消息队列,你会发现多了3张表

    1:activemq_acks

    2:activemq_lock

    3:activemq_msgs

    C:持久化为Oracle

        和持久化为MySql一样。这里我说两点

    1;在ActiveMQ安装文件夹里的Lib文件夹中增加Oracle的JDBC驱动。驱动文件位于Oracle客户端安装文件中的product11.1.0client_1jdbclib文件夹下。

    2:

    复制代码
    <bean id="derby-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:@10.53.132.47:1521:cmfudv1"/>
    <property name="username" value="qdcommu"/>
    <property name="password" value="qdcommu"/>
    <property name="maxActive" value="200"/>
    <property name="poolPreparedStatements" value="true"/>
    </bean>
    复制代码

    这里的jdbc:oracle:thin:@10.53.132.47:1521:cmfudv1按照自己实际情况设置一下就可以了,特别注意的是cmfudv1是SID即服务名称而不是TNS中配置的节点名。各位同学只需要替换IP,端口和这个SID就可以了。

    后记:

    这篇文章就是简单的记录一下操作过程,避免后来的同学走弯路

    以上从网上摘录,不过我下载的是apache-activemq-5.14.3,改成向mySql持久化数据时,启动mq报错,报cannot find class 【org.apache.commons.dbcp.BasicDataSource】,相信有个别

    同学从官网下载的最新mq,也会报这个错。

    解决办法:

    首先分析BasicDataSource在.apache.commons.dbcp.BasicDataSource下,但是mq中没有这个jar包,只有(commons-dbcp2-2.1.1)org.apache.commons.dbcp2.BasicDataSource,所以配置mysql时,要将dbcp改成dbcp2,由于commons-dbcp所用的连接池出现版本升级,因此commons-dbcp2中的数据库池连接配置也发生了变化,并且

    版本1.x中最大活动连接数属性名称为:maxActive;

    版本2.x中最大活动连接数属性名称为:maxTotal

    也要修改。

    重启成功

    可以参考:https://my.oschina.net/u/2284972/blog/662033

  • 相关阅读:
    python爬虫requests json与字典对象互相转换
    python爬虫requests的使用
    Django 使用celery任务队列的配置
    Django实现发邮件
    leetcode算法:Two Sum II
    Python中使用hashlib进行加密的简单使用
    leetcode算法: Average of Levels in Binary Tree
    Django中自定义过滤器的使用
    linux下git常用命令
    cocos2d-x 父节点和子节点执行不同动作
  • 原文地址:https://www.cnblogs.com/beijingstruggle/p/6406334.html
Copyright © 2011-2022 走看看