Active MQ-能够连接到其他计算机MySQL,但不能连接到本地计算机MySQL

问题描述

我在公司网络中,并且在我们的项目中使用ActiveMQ。我试图将数据而不是认的KahaDB持久存储在MysqL上,并按照ActiveMQ home page

上的指南进行操作

连接属性如下:

    <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/activemq"/>  
        <property name="username" value="root"/>  
        <property name="password" value="123456"/>  
        <property name="poolPreparedStatements" value="true"/>  
    </bean>

当我通过bin / win64 / wrapper.exe启动活动的mq服务器时,收到“通信链接失败”的消息:

2020-09-21 14:56:36,983 | WARN  | Could not get JDBC connection: Cannot create PoolableConnectionFactory (Communications link failure

The last packet successfully received from the server was 523 milliseconds ago.  The last packet sent successfully to the server was 515 milliseconds ago.) | org.apache.activemq.store.jdbc.JDBCPersistenceAdapter | WrapperSimpleAppMain
java.sql.sqlException: Cannot create PoolableConnectionFactory (Communications link failure

The last packet successfully received from the server was 523 milliseconds ago.  The last packet sent successfully to the server was 515 milliseconds ago.)
    at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:669)
    at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:544)
    at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:753)
...

Caused by: java.net.socketException: Software caused connection abort: socket write error
    at java.net.socketoutputStream.socketWrite0(Native Method)
    at java.net.socketoutputStream.socketWrite(UnkNown Source)
    ...
    at sun.security.ssl.SSLSocketImpl.startHandshake(UnkNown Source)
    at sun.security.ssl.SSLSocketImpl.startHandshake(UnkNown Source)
    at com.MysqL.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:187)

我注意到仍然存在一些“连接”,因为有发送和接收的数据包。但是,activemq服务器无法启动。

但是,当我将连接属性更改为登台服务器的IP地址时,activemq成功启动。

我创建了一个片段,尝试使用相同的连接属性连接到本地数据库,并且不会引发错误

public class ConnectionTest {
    public static void main(String[] args) throws sqlException {
        try (
         BasicDataSource dataSource = new BasicDataSource()) {
            dataSource.setUrl("jdbc:MysqL://127.0.0.1:3306/activemq");
            dataSource.setDriverClassName("com.MysqL.jdbc.Driver");
            dataSource.setUsername("activemq");
            dataSource.setPassword("");
            dataSource.setPoolPreparedStatements(true);
            Connection conn = dataSource.getConnection();
            conn.close();
        }
    }
}

在我的代码段中,我正在使用 mysql-connector-java.5.1.49.jar common-dbcp2-2.7.0.jar 。这两个jar也位于activemq / lib / optional

我尝试使用127.0.0.1,localhost和PC的IP地址。没有任何作用

我还可以尝试使用哪种其他解决方案来使主动mq使用本地数据库? 谢谢:)

解决方法

感谢@Kevin Boone指出SSL问题。我在 my.ini 文件中添加了以下内容:

ssl=0

然后重新启动mysql服务。现在,我的activeMQ代理可以连接到本地数据库。