【问题标题】:HTTP to JMS Bridge [closed]HTTP到JMS桥[关闭]
【发布时间】:2012-04-21 00:32:41
【问题描述】:

概述

我想向互联网公开一个消息队列,以便客户端应用程序可以与我们的一些后端服务进行通信。

出于安全原因,我不想直接公开 jms 端点。此外,纯 HTTP 传输将消除将 jms 插件分发到异构客户端应用程序(.net、java、javascript)的需要。

研究结果

ActiveMQ

我查看了 ActiveMQ 的“内置”REST 接口:

http://activemq.apache.org/rest.html

但在测试中,我发现演示不可靠(即“我的消息去哪儿了?”)。此外,关于如何将演示提取到“真实”实现中的文档也没有很好的记录。

ESB

因为这听起来像是企业集成模式中的经典“桥”模式,所以我查看了主要的开源 ESB/SOA 集成引擎:

  • Spring 集成
  • 骡子
  • 服务组合

在这三个文件中,最清晰的文档似乎是 ServiceMix's,它提供了一个 In-only 消息模式,我需要 POST-ing 和 GET-ing 消息。

不幸的是,就评估而言,我似乎必须深入研究每个实现和配置。我意识到开箱即用的设置可能要求太多,但我宁愿不学习所有三个,只学习最适合我需要的一个。所以...

问题

  • 您是否实施过类似的架构?你用了什么?
  • 不管第一个答案,您现在建议哪个?
  • 哪个最简单?

【问题讨论】:

  • 我已经创建了一个 ESB,它提供了一个使用 rest 的 javascript api,应该可以让一个客户端订阅一个队列,例如 rabbitmq,并使用 javascript api 来读取消息而不会暴露太多信息关于队列本身。例如,这个使用 javascript api 的应用程序:tinyurl.com/3bmr4z8

标签: http jms soa esb


【解决方案1】:

您可以随时查看Apache Camel Project。 它允许您将来自 Http、Web 服务等的请求公开并路由到 JMS 队列。

虽然我投票支持威尔的回答。 servlet 确实是要走的路。

【讨论】:

  • ActiveMQ 实际上与 Camel 捆绑在一起。完整的 ActiveMQ 示例要求您进入 ActiveMQ、Jetty 和 Camel 配置。 ServiceMix 使用 ActiveMQ。 Apache 链有点难以弄清楚可以很好地解决问题的最小组件是什么。
【解决方案2】:

或者您可以编写一个 servlet 并用几十行代码完成此操作。

【讨论】:

  • 我考虑过这一点,这就是我最终可能会做的事情,但是另一个编写的 servlet 意味着我需要维护另一个 servlet。 :)
  • 对比您几乎无法控制或了解多少兆的服务器基础架构。
  • 是的,但“简单”的 servlet 有一种令人讨厌的趋势,即会发展成非平凡的 servlet。例如,实现对不同队列的 url 映射并设置同步回复和异步回复将我们推过“简单”的 20 行标记。
  • 嗯,这些系统的大部分灵活性源于 5% 的边缘情况,这使得它们在 95% 的边缘情况下过于复杂。如果你在 5% 中,那么你就去追踪这些系统之一。否则,您可以对其进行编码并完成它,在必要时对其进行更改,并在您的用例发生更改时以及何时更改时逐步改进它。一个简单的地图可以处理你的路由,如果你真的需要走那么远,Servlet 3.0 和 Comet 处理都有很好的文档,其余的都是简单的例子。
  • 当然,我只是碰巧看到很多人转向这些预制解决方案来解决表面上简单的问题。人们只需要诚实地满足他们的要求,并意识到采用这些系统也是有代价的。
【解决方案3】:

我有一个类似的目标,为客户公开一个轻量级的 http 资源。它实际上充当适配器,接受简单的文本消息并将它们简单地异步放入队列,以供以后处理。到目前为止我的研究结果(仅对现有答案的补充):

  • HornetQ REST

    很好,但是调用必须知道目标名称,这对我的用例来说是不希望的。 Documentation

  • HJB(HTTP JMS 桥)

    也不符合我的需求,除此之外,文档不好理解,也不再维护。 Website

我可能最终会编写自己的适配器,或者使用一些瘦 servlet/等。或 Apache Camel。

【讨论】:

    猜你喜欢
    • 2018-10-27
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 2016-05-04
    • 2015-02-03
    • 2014-08-28
    • 1970-01-01
    相关资源
    最近更新 更多