Activemq5.15.5持久化到mysql8.0.20

一、环境

  Activemq:5.15.5

  Mysql:8.0.20

  这里面一定要针对自己的环境进行配置,以前用的是mysql 5.x的版本,然后切换为8.0x的版本,各种报错,有配置文件的错误,有mysql授权远程登录等等...

二、引入jar包到Activemq安装目录下

  我这里Activemq的安装目录是(/usr/local/activemq/apache-activemq-5.15.5),为了避免出错这个mysql数据库的驱动包请保持和你自己windows上安装的版本一模一样.

三、替换Activemq默认的持久化方式

  具体的配置如下:

<persistenceAdapter>
	<!-- 注释掉默认的kahaDB-->
	<!-- <kahaDB directory="${activemq.data}/kahadb"/> -->
	<!-- 注意这里的dataSource的名字要和下面bean里面的名字对应上,这里的有一个#号,类似于spring中的ref(引用))
	createTablesOnStartup:第一次连接会为我们生成表,默认值是true,生成完了表之后,改为false-->
	<jdbcPersistenceAdapter useDatabaseLock="false" dataSource="#mysqlDs" createTablesOnStartup="true"/>
</persistenceAdapter>

  

四、配置数据源

  具体的配置如下:

<bean id="mysqlDs" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close" >
	<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
	<!-- 192.168.229.1是我windows上装的mysql,对于mysql 8.x以后的版本,请加上后面几个参数-->
	<property name="url" value="jdbc:mysql://192.168.229.1:3306/activemq?relaxAutoCommit=true&useSSL=false&serverTimezone=GMT%2B8" />
	<property name="username" value="root" />
	<property name="password" value="root" />
	<property name="poolPreparedStatements" value="true"/>
</bean>

  

五、启动Activemq

  启动之后,可以看到windows上安装的数据库中自动生成了这几张表,生成完了以后记得设置  createTablesOnStartup="false"

六、常见错误排查

1、出现了问题,不要慌,首先去看日志文件,这里有两种方式

  方式一、./activemq console 查看启动日志

  方式二、activemq的安装目录/data里面去查看日志

2、确认计算机主机名名称没有下划线(不是Linux虚拟机的名称)

3、如果是win7,停止ICS(运行–>services.msc找到Internet Connection Sharing (ICS)服务,改成手动启动或禁用)

4、window和Linux的防火墙是否已经关闭

5、Host is not allowed to connect to this MySQL server:Mysql不允许root用户远程登录,所以远程登录失败了

  解决方案:  

// 在装有MySQL的机器上使用命令登录mysql	
MySQL mysql -u root -p密码
// 使用mysql数据库
use mysql;
// 这种方式是开放所有IP的root访问权限,如果是正式环境还是建议使用开放指定IP的方式
update user set host = ‘%’ where user = ‘root’;
// 执行刷新权限配置
FLUSH PRIVILEGES;

  开放指定IP的方式

    方式一:授权用户root使用密码jb51从任意主机连接到mysql服务器

    方式二:授权用户root使用密码jb51从指定ip为218.12.50.60的主机连接到mysql服务器

  

  

原文地址:https://www.cnblogs.com/xiaomaomao/p/13737493.html