将mysql-connector-java的jar包扔到ActiveMQ的lib目录下。
配置PersistenceAdapter结点为JDBC。修改conf目录下的activmeq.xml中的persistenceAdapter结点。
<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#mysql-ds" createTablesOnStartup="true"/>
</persistenceAdapter>
上面的#是引用符,dataSource指定要引用的持久化数据库的bean名称,createTablesOnStartup是否在启动的时候创建数据表,默认为true,这样每次启动都会新建数据表,一般是第一次启动设置成true,后面改成false。
添加mysql-ds,这样上面的配置文件才能拿到DataSource。将下面这段内容放在broker结点和import结点之间。
<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://192.168.0.104:3306/activemq?relaxAutoCommit=true"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
根据上面的配置,我们需要在192.168.0.104这台机器上,创建一个数据库名称为activemq的数据库。
这里需要注意一个问题,如果是高版本的MySQL数据库,需要指定时区,那就要在MySQL连接后面加上&serverTimezone=UTC的参数,这里的&不能直接写,要写&,也就是&的转义。这是后面我碰到的一个错误,更新一下。