1.ActiveMQ配置JDBC来持久化消息
- 首先更改activemq.xml 在你安装地址 conf文件夹里
- 将ActiveMQ默认的持久化存储方式kahaDB 注释掉换成<jdbcPersistenceAdapter ....
- createTablesOnStartup 第一次启动为ture 会自动创建三个表,第二次改为false 否在表已存在报异常
<persistenceAdapter>
<!--<kahaDB directory="${activemq.data}/kahadb"/>-->
<jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#mysql-ds" createTablesOnStartup="true"/>
</persistenceAdapter>
在</broker>外 添加jdbc的bean
<bean id="mysql-ds" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/activemqjdbc?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&relaxAutoCommit=true"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
serverTimezone=UTC UTC代表的是全球标准时间,MySQL jdbc 6.0 版本以上必须配置此参数 否则会报异常如下
Could not get JDBC connection: Cannot create PoolableConnectionFactory (The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.) | org.apache.activemq.store.jdbc.JDBCPersistenceAdapter | main
java.sql.SQLException: Cannot create PoolableConnectionFactory (The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.)
我引的org.apache.commons.dbcp2.BasicDataSource
其次往lib文件夹里添加包
链接:百度网盘-链接不存在
提取码:7etq
ActiveMQ配置JDBC message store with azhiive 持久化
- 只需要把activemq.xml里的<persistenceAdapter></persistenceAdapter>整段注释掉换成
-
<!--消息存储持久化JDBC message store with activemq journal--> <persistenceFactory> <journalPersistenceAdapterFactory journalLogFiles="4" journalLogFileSize="32768" useJournal="true" useQuickJournal="true" dataSource="#mysql-ds" dataDirectory="activemq-data"/> </persistenceFactory>
启动就好使了
第一次写文章,多多支持!!!
还有如果出错起不来一定要看看data文件夹里的activemq.log日志里报什么错,一般看看就懂了就能解决