Node.js 和 ActiveMQ 之间的集成 - 如何使用
Integration between Node.js and ActiveMQ - how to use
背景
我正在为一个需要消息代理的项目研究 ApacheMQ。阅读 official page 后,我发现了一些我感兴趣的功能:
- 访问消息Enterprise Integration Patterns(EIP)
- 支持 STOMP, AMQP, MQTT and OpenWire 协议
但是,根据文档,我不清楚我的某些目标是否可行。
问题
我了解到,为了将 ActiveMQ 用作代理,我首先需要一个消息传递协议。根据 language support for Node.js 上的文档,ActiveMQ 仅支持 Node.js 的 STOMP 协议。
- 鉴于 STOMP 是一个协议,如果我找到任何其他协议的 NPM 库,我可以将 Node.js 与该给定协议一起使用吗?
- 如果存在这样的库,你能指出一些吗?
- 将 Node.js 和 ActiveMQ 与 STOMP 以外的其他协议一起使用时是否有任何注意事项?
关于EIP,我也需要说明一下。仔细检查后,我意识到 EIPs can only be used via Apache Camel 是一个单独的项目,除了 Java 之外不支持任何其他项目。
- 是否可以将 ActiveMQ 提供的任何 EIP 与 Node.js 一起使用?如果是,怎么做?
免责声明
我 post 编辑这篇文章已经有一段时间了,为了将来参考,我在这里 post 整理我的发现。这些发现与我的经验有关,截至本文发表之日,它们已尽可能准确。
答案
Q1:鉴于 STOMP 是一个协议,如果我找到任何其他协议的 NPM 库,我可以使用 Node.js 与给定的协议吗?
A1:答案是肯定的。例如,使用 Node.js 的 MQTT 库,我可以与 ActiveMQ 代理进行通信。通常会有一些需要考虑的怪癖,但它确实有效。
Q2:如果有这样的库,能不能指点一下?
A2:
我个人希望至少在官方文档中加入MQTT库,我相信这将有助于解决用户的许多问题。
Q3:将 Node.js 和 ActiveMQ 与 STOMP 以外的其他协议一起使用时是否有任何注意事项?
A3:是的。 ActiveMQ 有奇怪的身份验证要求,导致使用协议支持版本的客户端在连接时失败(一个例子是以前的 AMQP 1.0 npm 库)。此外,每个图书馆都有自己的怪癖,您需要检查一下。通常库的 github 页面或问题页面会让您了解 ActiveMQ 的集成问题,但如果创建者声明对 ActiveMQ 的明确支持(情况并非总是如此),则会有所帮助。
Q4: Node.js是否可以使用ActiveMQ提供的任何EIP?如果是这样,如何?
A4:我相信这仍然可以通过带有 XML 的 REST DSL 实现(即使我们不使用 Spring 或类似的东西那)但我找不到任何东西,也找不到任何人实际使用它。社区未能就此事提供任何反馈,因为它似乎非常依赖 Java 技术,而没有其他领域的知识。
结论
总的来说,如果您有一个 Java 项目,您可以使用 ActiveMQ。如果您想使用其他任何东西,我强烈建议避免使用它。
一切都需要 Java 或某种程度的整合。
您可能会争辩说 ActiveMQ 支持多种协议,但实际上支持您自己的语言的其他工具也是如此。
即使到最后,Camel 提供的 EIP 也不能真正用于除 Java 之外的任何其他用途,甚至社区建议您自己实施模式,这违背了使用 ActiveMQ 的全部目的。
来源
特别感谢 "Gordon Sim-2" rhea 的作者。很棒的项目,去看看吧!
正如Flame_Phoenix所述,您可以轻松使用HTTP协议来发布和接收消息
背景
我正在为一个需要消息代理的项目研究 ApacheMQ。阅读 official page 后,我发现了一些我感兴趣的功能:
- 访问消息Enterprise Integration Patterns(EIP)
- 支持 STOMP, AMQP, MQTT and OpenWire 协议
但是,根据文档,我不清楚我的某些目标是否可行。
问题
我了解到,为了将 ActiveMQ 用作代理,我首先需要一个消息传递协议。根据 language support for Node.js 上的文档,ActiveMQ 仅支持 Node.js 的 STOMP 协议。
- 鉴于 STOMP 是一个协议,如果我找到任何其他协议的 NPM 库,我可以将 Node.js 与该给定协议一起使用吗?
- 如果存在这样的库,你能指出一些吗?
- 将 Node.js 和 ActiveMQ 与 STOMP 以外的其他协议一起使用时是否有任何注意事项?
关于EIP,我也需要说明一下。仔细检查后,我意识到 EIPs can only be used via Apache Camel 是一个单独的项目,除了 Java 之外不支持任何其他项目。
- 是否可以将 ActiveMQ 提供的任何 EIP 与 Node.js 一起使用?如果是,怎么做?
免责声明
我 post 编辑这篇文章已经有一段时间了,为了将来参考,我在这里 post 整理我的发现。这些发现与我的经验有关,截至本文发表之日,它们已尽可能准确。
答案
Q1:鉴于 STOMP 是一个协议,如果我找到任何其他协议的 NPM 库,我可以使用 Node.js 与给定的协议吗?
A1:答案是肯定的。例如,使用 Node.js 的 MQTT 库,我可以与 ActiveMQ 代理进行通信。通常会有一些需要考虑的怪癖,但它确实有效。
Q2:如果有这样的库,能不能指点一下?
A2:
我个人希望至少在官方文档中加入MQTT库,我相信这将有助于解决用户的许多问题。
Q3:将 Node.js 和 ActiveMQ 与 STOMP 以外的其他协议一起使用时是否有任何注意事项?
A3:是的。 ActiveMQ 有奇怪的身份验证要求,导致使用协议支持版本的客户端在连接时失败(一个例子是以前的 AMQP 1.0 npm 库)。此外,每个图书馆都有自己的怪癖,您需要检查一下。通常库的 github 页面或问题页面会让您了解 ActiveMQ 的集成问题,但如果创建者声明对 ActiveMQ 的明确支持(情况并非总是如此),则会有所帮助。
Q4: Node.js是否可以使用ActiveMQ提供的任何EIP?如果是这样,如何?
A4:我相信这仍然可以通过带有 XML 的 REST DSL 实现(即使我们不使用 Spring 或类似的东西那)但我找不到任何东西,也找不到任何人实际使用它。社区未能就此事提供任何反馈,因为它似乎非常依赖 Java 技术,而没有其他领域的知识。
结论
总的来说,如果您有一个 Java 项目,您可以使用 ActiveMQ。如果您想使用其他任何东西,我强烈建议避免使用它。
一切都需要 Java 或某种程度的整合。
您可能会争辩说 ActiveMQ 支持多种协议,但实际上支持您自己的语言的其他工具也是如此。
即使到最后,Camel 提供的 EIP 也不能真正用于除 Java 之外的任何其他用途,甚至社区建议您自己实施模式,这违背了使用 ActiveMQ 的全部目的。
来源
特别感谢 "Gordon Sim-2" rhea 的作者。很棒的项目,去看看吧!
正如Flame_Phoenix所述,您可以轻松使用HTTP协议来发布和接收消息