【问题标题】:SOAP or REST interface to JMS broker. "JMS over SOAP"JMS 代理的 SOAP 或 REST 接口。 “基于 SOAP 的 JMS”
【发布时间】:2017-05-05 04:05:40
【问题描述】:

我的公司很久以前就决定向客户公开一个 JMS 队列以交换数据。我们正在迁移应用程序服务器,我们必须更新所有客户端库。所以我们想公开一个更“标准”的接口。

我们正在寻找一种通过标准 SOAP 或 REST 协议公开 JMS 队列的简单方法。它不是 SOAP over JMS,而是相反的“JMS over SOAP”。

好像 ActiveMQ(Artemis) 有一个 REST 协议。这对我们来说是一个可行的解决方案,因为我们正在迁移到 Wildfly 10,但它有点复杂(例如,请参阅发布消息需要 2 次调用:请参阅 Posting Messages),并且它是特定于 ActiveMQ 的。我们必须为旧的 Weblogic 服务器再次实现它。

我们正在寻找的解决方案在 CAP 定理(在发送时提供消息重复数据删除和幂等读取)方面应该具有与 JMS 相同的可靠性。有什么建议吗?

【问题讨论】:

  • 我能问一下为什么它必须是“JMS over SOAP”,因为如果反过来,它可能看起来更简单,通过 Web 服务公开你的接口并调用它下面的任何东西。跨度>
  • SOAP over JMS 使用 JMS 作为传输。所以它在互操作性方面与 JMS 有相同的问题。例如(据我所知)使用 .NET 的客户端不可能连接到这样的服务。
  • JMS 不是传输。它只是一个 API。 JMS 上的 SOAP 仅使用底层代理传输。尽量不要混淆代理、传输协议和消息 API 的概念。而且 Camel 只是集成服务的框架,将使用底层代理(默认情况下为 ActiveMQ)。因此,基本上您正在寻找具有可用 REST/SOAP API 的代理。为什么不尝试 ActiveMQ REST API?你也可以尝试使用 STOMP 协议——它的传播范围很广,很多经纪商都支持它。
  • 您也可以寻找公开 AMQP 端点作为选项。大多数语言都有该协议的客户端库。
  • @Dagon 感谢您的澄清。我将修改问题以处理您的笔记。正如我在问题 Artemis(ActiveMQ 的新名称)中所写的那样,它有一个 REST 协议。我们正在考虑。不利的一面是,如果我们将它暴露给客户,我们将被绑定到该技术,我们仍然必须支持一些没有它的旧 Weblogic 10……另外,它不是我曾经使用过的最简单的协议见过。要发送一条消息,您必须调用两次。

标签: web-services rest soap jms activemq


【解决方案1】:

据我了解,这是我们想要结合 REST/Webservice 和 JMS 或创建混合模型的反模式。

与 REST/Webservice 相比,JMS 具有强大的可靠性、性能、监控、异常处理、异步响应和保证交付。 JMS 唯一的弱点是可以通过创建混合模型来克服的外部防火墙访问。 宁静的 JMS。 http://activemq.apache.org/rest.html http://activemq.apache.org/activesoap.html

谢谢

【讨论】:

    猜你喜欢
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    相关资源
    最近更新 更多