HTTP to JMS Bridge



概述

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

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

研究结果

ActiveMQ

我看了一下ActiveMQ的"内置"REST接口:

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

但在测试中,我发现演示不可靠(即"我的消息去哪里了?"(。此外,它还没有很好地记录如何将演示拉出到"真实"的实现中。

ESB

由于这听起来像是企业集成模式中的经典"桥接"模式,我查看了主要的开源ESB/SOA集成引擎:

  • Spring集成
  • 骡子
  • ServiceMix

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

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

问题

  • 您是否实现了类似的体系结构?你用了什么
  • 不管第一个答案如何,你现在会建议哪个
  • 哪一个最简单

您可以随时查看ApacheCamel项目。它允许您将请求从Http、Web服务等公开并路由到JMS队列。

尽管我投票支持威尔的回答。servlet确实是实现这一目标的方法。

或者您可以编写一个servlet,并在几十行代码中完成这项工作。

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

  • HornetQ REST

    很好,但是被调用者必须知道目的地名称,这对于我的用例来说是不需要的。文档

  • HJB(HTTP JMS桥(

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

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

最新更新