温馨提示:本文翻译自stackoverflow.com,查看原文请点击:java - Does RabbitMQ really work with Amazon MQ (ActiveMQ)?
activemq java rabbitmq amazon-mq

java - RabbitMQ真的可以与Amazon MQ(ActiveMQ)一起使用吗?

发布于 2020-04-16 11:06:28

我有一个Java RabbitMQ生产者应用程序,我想从Amazon MQ在ActiveMQ上发送一些消息(我已经创建了代理)。我遵循此页面上的步骤

我为RabbitMQ创建了Java示例,起初看起来还不错,但是当我创建到端点的连接时(也包括用户名和密码): amqps://x-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-x.xx.xx-xxxx-x.amazonaws.com:5671

在这一行:

factory.newConnection();

我有这些错误:

内部库中的错误:

[AMQP Connection xx.xx.xx.xx:5671] ERROR com.rabbitmq.client.impl.ForgivingExceptionHandler - An unexpected connection driver error occured
com.rabbitmq.client.MalformedFrameException: AMQP protocol version mismatch; we are version 0-9-1, server sent signature 3,1,0,0
    at com.rabbitmq.client.impl.Frame.protocolVersionMismatch(Frame.java:170)
    at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:107)
    at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:184)
    at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:645)
    at java.lang.Thread.run(Thread.java:745)

我发现的错误:

null com.rabbitmq.client.ShutdownSignalException: connection error

我知道主要错误是版本不匹配,但是有没有办法通过更改版本协议来解决它,或者不可能呢?

因为在示例中RabbitMQ使用AMQP 0-9。

查看更多

提问者
CarlosS
被浏览
321
Justin Bertram 2020-02-04 10:44

ActiveMQ(5.x“经典”Artemis)都支持AMQP 1.0。如果RabbitMQ客户端使用AMQP 1.0,则它应该可以工作。如果不是,则不会。

您引用的文档并不表示RabbitMQ客户端可以与ActiveMQ一起使用。它只是演示RabbitMQ客户端的常用用法,然后提供替代的JMS示例。在“结论”部分中,文章指出:

在本文中,我回顾了如何开始使用Amazon MQ代理,并为您提供了一些示例代码,探讨了RabbitMQ和Apache ActiveMQ客户端集成之间的区别。如果您正在考虑迁移到Amazon MQ,这些示例应有助于您理解可能需要的更改。

换句话说,您必须更改您的应用程序。您不能将RabbitMQ客户端与ActiveMQ一起使用。