【问题标题】:Integration between Node.js and ActiveMQ - how to useNode.js 和 ActiveMQ 之间的集成 - 如何使用
【发布时间】:2017-10-07 17:55:45
【问题描述】:

背景

我正在为一个需要消息代理的项目研究 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 一起使用?如果有,怎么做?

【问题讨论】:

    标签: javascript node.js activemq messaging amqp


    【解决方案1】:

    免责声明

    我已经有一段时间没有发布这个了,为了将来的参考,我在这里发布我的发现。这些发现与我的经验有关,截至本文发布之日,它们尽可能准确。

    答案

    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 的全部目的。

    来源

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

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

    【讨论】:

    • 感谢您发布罚款,我正在做类似的研究。让我退缩的一件事是身份验证,文档指的是扩展一个 java 类来拦截和构建我自己的身份验证,但我只在 java 上看到它。可能我漏掉了一些东西,是不是意味着只有 java 可以拦截,而没有其他语言,如 python 或 javascript?
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-28
      • 1970-01-01
      • 2020-03-12
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      • 2020-11-17
      相关资源
      最近更新 更多