Node.js 和 ActiveMQ 之间的集成 - 如何使用

Integration between Node.js and ActiveMQ - how to use

背景

我正在为一个需要消息代理的项目研究 ApacheMQ。阅读 official page 后,我发现了一些我感兴趣的功能:

但是,根据文档,我不清楚我的某些目标是否可行。

问题

我了解到,为了将 ActiveMQ 用作代理,我首先需要一个消息传递协议。根据 language support for Node.js 上的文档,ActiveMQ 仅支持 Node.js 的 STOMP 协议。

  1. 鉴于 STOMP 是一个协议,如果我找到任何其他协议的 NPM 库,我可以将 Node.js 与该给定协议一起使用吗?
  2. 如果存在这样的库,你能指出一些吗?
  3. 将 Node.js 和 ActiveMQ 与 STOMP 以外的其他协议一起使用时是否有任何注意事项?

关于EIP,我也需要说明一下。仔细检查后,我意识到 EIPs can only be used via Apache Camel 是一个单独的项目,除了 Java 之外不支持任何其他项目。

  1. 是否可以将 ActiveMQ 提供的任何 EIP 与 Node.js 一起使用?如果是,怎么做?

免责声明

我 post 编辑这篇文章已经有一段时间了,为了将来参考,我在这里 post 整理我的发现。这些发现与我的经验有关,截至本文发表之日,它们已尽可能准确。

答案

Q1:鉴于 STOMP 是一个协议,如果我找到任何其他协议的 NPM 库,我可以使用 Node.js 与给定的协议吗?

A1:答案是肯定的。例如,使用 Node.js 的 MQTT 库,我可以与 ActiveMQ 代理进行通信。通常会有一些需要考虑的怪癖,但它确实有效。


Q2:如果有这样的库,能不能指点一下?

A2:

  • MQTT:mqtt
  • AMQP 1.0:amp10 and rhea. They don't work out of the box - see
  • STOMP:推荐的 STMOPIT 库。

我个人希望至少在官方文档中加入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 的全部目的。

来源

社区话题:http://activemq.2283324.n4.nabble.com/Integration-between-Node-js-and-ActiveMQ-how-to-use-td4725822.html

特别感谢 "Gordon Sim-2" rhea 的作者。很棒的项目,去看看吧!

正如Flame_Phoenix所述,您可以轻松使用HTTP协议来发布和接收消息

更多信息:https://activemq.apache.org/rest