概述
我想向互联网公开一个消息队列,以便客户端应用程序可以与我们的一些后端服务进行通信。
由于安全原因,我不想直接公开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。