一、环境
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服务器