ActiveMQ 消息持久化到数据库(Mysql、SQL Server、Oracle、DB2等)
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等)的更多相关文章
- 从运维的角度分析使用阿里云数据库RDS的必要性--你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库
开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库. 云数据库 RDS(Relational Database ...
- SQL Server,Oracle,DB2索引建立语句的对比
原文引至:http://jvortex.blog.163.com/blog/static/16961890020122141010878/ 我们知道,索引是用于加速数据库查询的数据库对象.原理就是减少 ...
- MySQL&SQL server&Oracle&Access&PostgreSQL数据库sql注入详解
判断数据库的类型 当我们通过一些测试,发现存在SQL注入之后,首先要做的就是判断数据库的类型. 常用的数据库有MySQL.Access.SQLServer.Oracle.PostgreSQL.虽然绝大 ...
- [PowerDesign]将数据库从SQL Server数据库转换为MySQL
原文:[PowerDesign]将数据库从SQL Server数据库转换为MySQL 一.迁移Database Schema. 首先使用Sybase Powerdesigner的逆向工程功能,逆向出S ...
- .net(C#数据库访问) Mysql,Sql server,Sqlite,Access四种数据库的连接方式
便签记录Mysql,Sql server,Sqlite,Access四种数据库的简单连接方式 //using MySql.Data.MySqlClient; #region 执行简单SQL语句,使用M ...
- 未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker
昨晚遇到的这个问题,也知道Notifications service依赖底层的Service broker的.本以为只需要执行以下脚本对数据库启用Service broker即可. alter dat ...
- 在Windows Server 2008 R2 Server中,连接其他服务器的数据库遇到“未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker ”
项目代码和数据库部署在不同的Windows Server 2008 R2 Server中,错误日志显示如下: "未启用当前数据库的 SQL Server Service Broker,因此查 ...
- SQL问题:未启用当前数据库的 SQL Server Service Broker
数据库分离后,附加回到数据库,然后在程序中打开调用数据库的页面,出现如下问题:“未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持.如果希望使用通知,请为此数 ...
- 如何转换SQL Server 2008数据库到SQL Server 2005
背景介绍: 公司一套系统使用的是SQL SERVER 2008数据库,突然一天收到邮件,需要将这套系统部署到各个不同地方(海外)的工厂,需要在各个工厂部署该数据库,等我将准备工作做好,整理文档 ...
随机推荐
- C# 窗体间传值(使用委托与自定义事件)
using System; using System.Drawing; using System.Windows.Forms; namespace 跨窗体调用控件 { public partial c ...
- EayRadius 于 2013-7-19 进行体验度更新,增加用户体验度
EasyRadius于2013-7-19进行更新,此次更新并没有更新通讯接口,通讯接口将统一更新,包括对其他路由的支持 下面我将主要更新的地方向大家描述一下 如果你有疑问或者建议,可以致电137799 ...
- iOS: 动画更换 UIImageView 的 Image
#import <QuartzCore/QuartzCore.h> ... imageView.image = [UIImage imageNamed:(i % ) ? @"3. ...
- Objective-C语法之NSPredicate的使用
正则表达式判断手机号码和电话号码的方法: #import <Foundation/Foundation.h> /** 正则判断手机号码地址格式 */ BOOL isMobileNumber ...
- glibc中fork系统调用传参
因为想跟踪下在新建进程时,如何处理新建进程的vruntime,所以跟踪了下fork. 以glic-2.17中ARM为例(unicore架构的没找到),实际上通过寄存器向系统调用传递的参数为: r7: ...
- 解决parseSdkContent failed java.lang.NullPointerException错误
今天我的eclipse崩溃了,报“parseSdkContent failed java.lang.NullPointerException”的错误. 所有的安卓项目都不正常,创建项目就会报 java ...
- Android开发学习笔记-SharedPreferences的用法
SharedPreferences介绍: 做软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连接跟操作等 ...
- Python 多线程相关知识学习
多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进 ...
- IFrame实现页面无刷新
一.html 和s代码段 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...
- AES五种加密模式
分组密码在加密时明文分组的长度是固定的,而实用中待加密消息的数据量是不定的,数据格式可能是多种多样的.为了能在各种应用场合安全地使用分组密码,通常对不同的使用目的运用不同的工作模式. 一.电码本模式( ...