Java 在同一台机器上同时运行ActiveMQ和RabbitMQ时,AMQP协议版本不匹配

Java 在同一台机器上同时运行ActiveMQ和RabbitMQ时,AMQP协议版本不匹配,java,spring,rabbitmq,activemq,amqp,Java,Spring,Rabbitmq,Activemq,Amqp,我一直在尝试开发一个同时使用activeMQ和rabbitMQ的项目。我在pom.xml中添加的依赖项如下所示: <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>1.4.6.RELEASE</versio

我一直在尝试开发一个同时使用activeMQ和rabbitMQ的项目。我在pom.xml中添加的依赖项如下所示:

    <dependency>
        <groupId>org.springframework.amqp</groupId>
        <artifactId>spring-rabbit</artifactId>
        <version>1.4.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jms</artifactId>
        <version>4.2.3.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-broker</artifactId>
        <version>5.13.0</version>
    </dependency>
java.io.IOException
    at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
    at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:350)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:648)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:678)
    at org.hafiz.framework.common.rabbit.filter.ReceiveRabbitMessageFilter.init(ReceiveRabbitMessageFilter.java:33)
    at org.hafiz.common.filter.PrmTarrifTypeMessageFilter.init(PrmTarrifTypeMessageFilter.java:21)

    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4854)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5546)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)

    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1263)

    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1948)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error
    at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
    at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:37)

    at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:367)
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:293)
    ... 20 more
Caused by: com.rabbitmq.client.MalformedFrameException: AMQP protocol version mismatch; we are version 0-9-1, server sent signature 0,1,0,0
    at com.rabbitmq.client.impl.Frame.protocolVersionMismatch(Frame.java:174)
    at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:111)

    at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:139)
    at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:536)
    ... 1 more
java.lang.NullPointerException
    at org.hafiz.framework.common.rabbit.filter.ReceiveRabbitMessageFilter.receiveMessage(ReceiveRabbitMessageFilter.java:61)
    at org.hafiz.common.filter.PrmTarrifTypeMessageFilter$1.run(PrmTarrifTypeMessageFilter.java:29)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

org.springframework.amqp
同时。
但不幸的是,我遇到了一个与AMQP相关的错误,如下所示:

    <dependency>
        <groupId>org.springframework.amqp</groupId>
        <artifactId>spring-rabbit</artifactId>
        <version>1.4.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jms</artifactId>
        <version>4.2.3.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-broker</artifactId>
        <version>5.13.0</version>
    </dependency>
java.io.IOException
    at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
    at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:350)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:648)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:678)
    at org.hafiz.framework.common.rabbit.filter.ReceiveRabbitMessageFilter.init(ReceiveRabbitMessageFilter.java:33)
    at org.hafiz.common.filter.PrmTarrifTypeMessageFilter.init(PrmTarrifTypeMessageFilter.java:21)

    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4854)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5546)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)

    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1263)

    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1948)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error
    at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
    at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:37)

    at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:367)
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:293)
    ... 20 more
Caused by: com.rabbitmq.client.MalformedFrameException: AMQP protocol version mismatch; we are version 0-9-1, server sent signature 0,1,0,0
    at com.rabbitmq.client.impl.Frame.protocolVersionMismatch(Frame.java:174)
    at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:111)

    at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:139)
    at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:536)
    ... 1 more
java.lang.NullPointerException
    at org.hafiz.framework.common.rabbit.filter.ReceiveRabbitMessageFilter.receiveMessage(ReceiveRabbitMessageFilter.java:61)
    at org.hafiz.common.filter.PrmTarrifTypeMessageFilter$1.run(PrmTarrifTypeMessageFilter.java:29)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
java.io.IOException
位于com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
位于com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
位于com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:350)
位于com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:648)
位于com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:678)
位于org.hafiz.framework.common.rabbit.filter.ReceiveRabbitMessageFilter.init(ReceiveRabbitMessageFilter.java:33)
在org.hafiz.common.filter.prmtariftypemessagefilter.init(prmtariftypemessagefilter.java:21)上
位于org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
位于org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
位于org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:105)
位于org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4854)
位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5546)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
位于org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
位于org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
位于org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
位于org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1263)
位于org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1948)
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
在java.util.concurrent.FutureTask.run(FutureTask.java:262)处
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:745)
原因:com.rabbitmq.client.ShutdownSignalException:连接错误
位于com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
位于com.rabbitmq.utility.BlockingValueOrException.UnterruptibleGetValue(BlockingValueOrException.java:37)
在com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:367)
位于com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:293)
... 20多
原因:com.rabbitmq.client.MalformedFrameException:AMQP协议版本不匹配;我们是版本0-9-1,服务器发送签名0,1,0,0
位于com.rabbitmq.client.impl.Frame.protocolVersionMismatch(Frame.java:174)
位于com.rabbitmq.client.impl.Frame.readFrom(Frame.java:111)
位于com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:139)
位于com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:536)
... 还有一个
java.lang.NullPointerException
位于org.hafiz.framework.common.rabbit.filter.ReceiveRabbitMessageFilter.receiveMessage(ReceiveRabbitMessageFilter.java:61)
在org.hafiz.common.filter.PrmTarrifTypeMessageFilter$1.run(PrmTarrifTypeMessageFilter.java:29)
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
在java.util.concurrent.FutureTask.run(FutureTask.java:262)处
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:745)

如果有人能帮我解决这个错误,我将不胜感激。

解决方案就是更改其中一个消息代理的端口号。由于它们都在同一个端口(5672)上工作,您只需更改其中一个端口的配置即可

对于rabbitMQ,您可以搁置所解释的指令,就像@Kenney所说的一样,这就像设置环境变量一样简单

注意:在设置变量期间,不要忘记重新安装RabbitMQ服务

在windows中,可以通过在命令提示符下运行以下命令来执行此操作:

  • 将cd放入RabbitMQ服务器安装目录下的sbin文件夹中,然后运行RabbitMQ-service.bat remove
  • 设置RABBITMQ_节点_端口=xxxx
  • rabbitmq-service.bat安装
  • 此外,如果它不起作用,您可以简单地为amqp更改ActiveMQ的默认端口。为此,您应该在activemq服务器安装目录中的conf文件夹中查找文件名activemq.xml。
    我希望这对您有用。

    协议AMQP在端口5672上工作,两个消息代理都支持此协议。只需将其中一个移动到另一台机器。

    您是否已将它们配置为使用不同的端口?@Kenney我已经在rabbitMQ安装目录的etc文件夹中查找了配置文件。但我找到的唯一文件名为“rabbitmq.config.example”。因此,我将该文件中的端口号更改为5673。然而,我认为这不是一个合适的文件来改变。你有没有看到-似乎使用环境变量。如果失败了,您可以更改。毕竟,只需要更改其中一个。@Kenney感谢您的回复,我更改了RabbitMQ端口,就像您在链接中所说的那样。不幸的是,这个错误还没有改变。@Kenney I终于成功地解决了这个问题。我不知道为什么,但我无法更改RabbitMQ端口。因此,我更改了ActiveMQ的默认端口。谢谢你的帮助。谢谢你宝贵的回答,但就像我告诉@Kenney的那样,尽管我有don