ActiveMQ具体就不介绍了,直接介绍如何讲ActiveMQ持久化到本地数据库,以SQL Server 2008 R2为例
1.下载ActiveMQ后直接解压,我下载的是apache-activemq-5.14.5-bin.zip。

2.打开conf下的activemq.xml,我要配置的是将消息持久化到SQL Server 2008 R2

3.增加配置:

 Mysql持久化bean:

<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="poolPreparedStatements" value="true"/>
</bean> SQL Server持久化bean:

<bean id="mssql-ds" class="net.sourceforge.jtds.jdbcx.JtdsDataSource" destroy-method="close">
<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="url" value="jdbc:sqlserver://xx.xxx.x.xxx:1433;databaseName=DATANAME;user=USER;password=PASSWORD"/>
<property name="user" value="USER"/>
<property name="password" value="PASSWORD"/>
</bean> Oracle持久化bean:

<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:@10.53.132.47:1521:activemq"/>
<propertyname="username" value="activemq"/>
<property name="password" value="activemq"/>
<property name="maxActive" value=""/>
<property name="poolPreparedStatements" value="true"/>
</bean> DB2持久化bean:

<bean id="db2-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.ibm.db2.jcc.DB2Driver"/>
<property name="url" value="jdbc:db2://hndb02.bf.ctc.com:50002/activemq"/>
<property name="username" value="activemq"/>
<property name="password" value="activemq"/>
<property name="maxActive" value=""/>
<property name="poolPreparedStatements" value="true"/>
</bean>

  如图所示:配置MSSQL数据库

根据自己的服务器设定相关的信息。

4.修改持久化设置:

 <persistenceAdapter>
  <jdbcPersistenceAdapter dataSource="#mssql-ds" createTablesOnStartup="true"/>
</persistenceAdapter>

如图所示:配置jdbcPersistenceAdpater

5.最后,别忘了将MSSQL Server JDBC驱动sqljdbc4-4.0.jar(可以到微软官网下载https://msdn.microsoft.com/zh-cn/library/mt683464.aspx)拷贝到lib目录下,
好了,运行bin下的activemq.bat。
在数据库中已建立好ActiveMQ持久化需要的数据表。如图所示:如果配置成功,默认会创建三张表:

activemq_acks:ActiveMQ的签收信息。
activemq_lock:ActiveMQ的锁信息。
activemq_msgs:ActiveMQ的消息的信息

6.当表已成功创建,再次修改持久化设置中的创建表设置(只要第一次创建表成功就行了):
createTablesOnStartup="false"

7.管理登录:
http://localhost:8161默认用户和密码均为admin

OK配置完成!

PS:如果你发现ActiveMQ添加了持久化后,发了消息,为什么activemq_msgs表中没有记录任何数据,其实这个是需要我们自己在代码里控制的,需要设置MsgDeliveMode为Persistent,具体代码如下:

 //PERSISTENT:保存到磁盘,consumer消费之后,message被删除。
//NON_PERSISTENT:保存到内存,消费之后message被清除。
//注意:堆积的消息太多可能导致内存溢出。
producer.Send(msg,MsgDeliveryMode.Persistent,level,TimeSpan.MinValue);

PS:如有疑问,请留言,未经允许,不得私自转载,转载请注明出处:https://www.cnblogs.com/xuliangxing/p/6866892.html

ActiveMQ 消息持久化到数据库(Mysql、SQL Server、Oracle、DB2等)的更多相关文章

  1. 从运维的角度分析使用阿里云数据库RDS的必要性--你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库

    开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库. 云数据库 RDS(Relational Database ...

  2. SQL Server,Oracle,DB2索引建立语句的对比

    原文引至:http://jvortex.blog.163.com/blog/static/16961890020122141010878/ 我们知道,索引是用于加速数据库查询的数据库对象.原理就是减少 ...

  3. MySQL&SQL server&Oracle&Access&PostgreSQL数据库sql注入详解

    判断数据库的类型 当我们通过一些测试,发现存在SQL注入之后,首先要做的就是判断数据库的类型. 常用的数据库有MySQL.Access.SQLServer.Oracle.PostgreSQL.虽然绝大 ...

  4. [PowerDesign]将数据库从SQL Server数据库转换为MySQL

    原文:[PowerDesign]将数据库从SQL Server数据库转换为MySQL 一.迁移Database Schema. 首先使用Sybase Powerdesigner的逆向工程功能,逆向出S ...

  5. .net(C#数据库访问) Mysql,Sql server,Sqlite,Access四种数据库的连接方式

    便签记录Mysql,Sql server,Sqlite,Access四种数据库的简单连接方式 //using MySql.Data.MySqlClient; #region 执行简单SQL语句,使用M ...

  6. 未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker

    昨晚遇到的这个问题,也知道Notifications service依赖底层的Service broker的.本以为只需要执行以下脚本对数据库启用Service broker即可. alter dat ...

  7. 在Windows Server 2008 R2 Server中,连接其他服务器的数据库遇到“未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker ”

    项目代码和数据库部署在不同的Windows Server 2008 R2 Server中,错误日志显示如下: "未启用当前数据库的 SQL Server Service Broker,因此查 ...

  8. SQL问题:未启用当前数据库的 SQL Server Service Broker

    数据库分离后,附加回到数据库,然后在程序中打开调用数据库的页面,出现如下问题:“未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持.如果希望使用通知,请为此数 ...

  9. 如何转换SQL Server 2008数据库到SQL Server 2005

        背景介绍: 公司一套系统使用的是SQL SERVER 2008数据库,突然一天收到邮件,需要将这套系统部署到各个不同地方(海外)的工厂,需要在各个工厂部署该数据库,等我将准备工作做好,整理文档 ...

随机推荐

  1. ant学习笔记-taskdef

    1.声明task jar包中指定的task <taskdef name="xmltask“ classname="com.oopsconsultancy.xmltask.an ...

  2. iOS: 定义 Block

    定义 typedef void (^RFAudioBasicBlock) (void); typedef void (^RFAudioSuccessBlock) (BOOL flag); typede ...

  3. iOS : 用 InterfaceBuilder 开始一个项目

    1.创建一个 xib 文件 : Main_iPhone.xib 更改 File's Owner 的 Class 为 UIApplication; 添加 1 个 Window .1 个 Object . ...

  4. 用C++做微信公众平台开发的后台开发时,用sha1加密验证的方法

    微信公众平台开发时,须要验证消息是否来自微信server,这要用到sha1加密算法.官网上给的是php的sha函数,C++中要用到以下这个函数: 一.引入头文件: #include<openss ...

  5. 给NSMutableArray添加copy属性就变成了NSArray

    -copy, as implemented by mutable Cocoa classes, always returns their immutable counterparts. Thus, w ...

  6. thinkphp 在阿里云上的nginx.config配置

    # For more information on configuration, see: # * Official English Documentation: http://nginx.org/e ...

  7. javascript提取联通个人信息和通话记录的代码

    由于一些巨大的困难,一些后端爬虫改成了前端爬虫. 前端爬虫是只有js语言,后端爬虫有python java nodejs php这些语言. 前端爬虫有window.document对象,在浏览器端的爬 ...

  8. Python基础教程学习笔记:第二章 列表和元组

    1.序列中元素的索引: 第一个元素索引是0,第二个是1,依次递增 最后一个元素索引是-1,倒数第二个是-2,依次递减 2.序列(Sequence)的种类: 列表(list).元组(tuple).字符串 ...

  9. elastic search 概念

    1. index 与 type index 相当于 mysql 的 database, type 相当于 table 2. mapping mapping 相当于 mysql table 的列属性声明 ...

  10. jackson 转换 enum 类型

    REST API 接口要求 requster json 的 lifeCycle 域只能填 YOUNG, OLD,对于其他的 lifeCycle,都要给 requester 返回 bad request ...