HTTP到JMS桥

时间:2011-08-12 20:08:26

标签: http jms soa esb

概述

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

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

研究结果

的ActiveMQ

我看了一下ActiveMQ的“内置”REST界面:

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

但是在测试中,我发现演示不可靠(即“我的消息在哪里?”)。此外,关于如何将演示推向“真正的”实现,还没有详细记录。

ESB

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

  • Spring Integration
  • ServiceMix的

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

不幸的是,对于评估条款,我似乎不得不深入研究每个实现和配置。我意识到开箱即用的设置可能太多了,但我宁愿不学习所有这三个,只考虑哪一个最符合我的需求。所以......

问题

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

4 个答案:

答案 0 :(得分:5)

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

虽然我投票支持威尔的回答。 servlet真的是去这里的方式。

答案 1 :(得分:2)

或者你可以编写一个servlet并用几十行代码来完成。

答案 2 :(得分:1)

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

  • HornetQ REST

    很好,但是calles必须知道目的地名称,这对我的用例来说是不受欢迎的。 Documentation

  • HJB(HTTP JMS Bridge)

    也不符合我的需要,除了这个文档不好理解,它也不再维护。 Website

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

答案 3 :(得分:0)

WSO2 ESB提供开箱即用的样品,您可以在几分钟内试用。毕竟它的100%免费和开源,只需下载分发并运行它。 (没有两种版本的商业和社区的痛苦)

根据您的要求,wso2提供了一个开箱即用的示例[1],您可以使用外部消息代理(如活动mq等)配置ESB,并将其公开为任何其他服务[2]。 (SOAP Web服务/ REST服务等)。

试一试。

[1] http://wso2.org/project/esb/java/4.0.0/docs/samples/transport_samples.html#Sample251 [2] http://techfeast-hiranya.blogspot.com/2009/07/integrating-apache-activemq-with-wso2.html