java - RabbitMQ 真的可以与 Amazon MQ (ActiveMQ) 一起使用吗?
问题描述
我有一个 Java RabbitMQ 生产者应用程序,我想在 ActiveMQ 上从 Amazon MQ 发送一些消息(我已经创建了代理)。我按照此页面的步骤操作。
我为 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。
解决方案
ActiveMQ(5.x “经典”和Artemis)支持 AMQP 1.0。如果 RabbitMQ 客户端使用 AMQP 1.0,那么它应该可以工作。如果没有,那么就不会。
您引用的文档并未表明 RabbitMQ 客户端将与 ActiveMQ 一起使用。它只是演示了 RabbitMQ 客户端的常见用法,然后提供了替代的 JMS 示例。在“结论”部分,文章指出:
在这篇文章中,我回顾了如何开始使用 Amazon MQ 代理,并通过几个代码示例向您介绍了 RabbitMQ 和 Apache ActiveMQ 客户端集成之间的差异。如果您正在考虑迁移到 Amazon MQ,这些示例应该可以帮助您了解可能需要进行的更改。
换句话说,您将不得不更改您的应用程序。您不能将 RabbitMQ 客户端与 ActiveMQ 一起使用。
推荐阅读
- ruby - Bourbon 安装错误:“错误的解释器:没有这样的文件或目录”
- vue.js - 将新的迭代数据传递给 props Vue.js
- html - CSS如何阻止渲染?
- javascript - 为什么 .then 在 jasmine 中测试时不是一个函数
- python - 如何在python中删除一个空行
- javascript - 使用多文件上传发送数据
- python-3.x - 在 Python 中使用 OpenCV 扫描 OMR 表
- javascript - 获取 Mongoose UpdateMany 受影响文档的数量
- jena - 对于在 Protege 中创建的本体,如何将模糊推理器与 jena 包括在内?
- celery - 气流是否使用芹菜节拍