ActiveMQ“经典”JDBC主从持久性问题,JDBC无法使用MySQL 8连接器锁定MySQl DB

5ktev3wc  于 2023-08-02  发布在  Mysql
关注(0)|答案(1)|浏览(115)

当只使用JDBC作为数据源时,可以使用运行两个代理(即一个用于主设备而另一个用于从设备)。我使用MySQL 8连接器连接MySQL 5.7和8客户端。下面是ActiveMQ配置文件:

<beans
  xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">

     <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}">

      <persistenceAdapter>
                <!-- <kahaDB directory="${activemq.data}/kahadb"/> -->
                 <jdbcPersistenceAdapter dataDirectory="activemq.data" dataSource="#mysql-ds"/>
        </persistenceAdapter>
    </broker>

    <bean id="mysql-ds" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://192.xx.x.xx:3306/activemq_veeru?serverTimezone=UTC"/>
        <property name="username" value="admin"/>
        <property name="password" value="admin"/>
        <property name="poolPreparedStatements" value="true"/>
    </bean>

字符串
启动服务时出现以下错误,即无法锁定数据库。

Using Persistence Adapter: JDBCPersistenceAdapter(org.apache.commons.dbcp2.BasicDataSource@6bd16207) | org.apache.activemq.broker.BrokerService | main
Starting Persistence Adapter: JDBCPersistenceAdapter(org.apache.commons.dbcp2.BasicDataSource@6bd16207) | org.apache.activemq.broker.BrokerService | main
Database adapter driver override not found for : [mysql_connector_j].  Will use default implementation. | org.apache.activemq.store.jdbc.JDBCPersistenceAdapter | main
Database lock driver override not found for : [mysql_connector_j].  Will use default implementation. | org.apache.activemq.store.jdbc.JDBCPersistenceAdapter | main


使用mysql-connector-java-5.1.49activemq-jdbc-store-5.13.2时,它的工作没有任何问题。但是,当我分别将连接器和JDBC存储升级到mysql-connector-j-8.0.31activemq-jdbc-store-5.17.1时,我开始了这个问题。

yxyvkwin

yxyvkwin1#

ActiveMQ“Classic”从JDBC驱动程序提供的java.sql.DatabaseMetaData#getDriverName中获取值,并将其Map到服务文件的名称,以找到正确的持久性适配器实现。例如,如果您使用的是mysql-connector-java-5.1.49.jar,则来自getDriverName()的值将是MySQL Connector Java,它将Map到指向org.apache.activemq.store.jdbc.adapter.MySqlJDBCAdapter的服务文件mysql_connector_java
但是,由于您使用的是mysql-connector-j-8.0.31.jar,因此来自getDriverName()的值是MySQL Connector/J,它不Map到ActiveMQ“Classic”中的任何服务文件。换句话说,它目前不受支持。
没有直接支持MySQL 8 Connector/J的ActiveMQ“Classic”版本。最新的MySQLJDBC驱动程序是6.0.6,您可以使用它而不必退回到默认的适配器和锁驱动程序。

相关问题