【问题标题】:WebSphere MQ Low Latency Messaging - Does it have a JMS (or JMS like) API?WebSphere MQ 低延迟消息传递 - 它是否具有 JMS(或类似 JMS)API?
【发布时间】:2010-12-05 08:46:27
【问题描述】:

我们目前通过 JMS 使用 IBM MQ,但推送的消息似乎超出了它的处理能力 - 奇怪的是,问题似乎是间歇性的。

消息是价格,因此不需要保证,只需要快速发送即可。

由于 IBM 有 Low Latency product,我想知道这是否是更好的解决方案 - 但它似乎没有 JMS api,或者至少不容易看到。

任何人都知道低延迟产品中是否有 JMS api,或者它确实具有的“独特”API 是否类似于 JMS...

另外,MQ 调整的指针也将不胜感激... :)

【问题讨论】:

    标签: java jms ibm-mq


    【解决方案1】:

    毫无疑问,低延迟消息传递产品会更适合您的问题,我正在开展一个项目,我们使用来自29West 的称为 LBM 的低延迟消息传递产品做非常相似的事情。它没有 JMS api,我怀疑低延迟空间中的大多数产品都没有。与这些类型的产品(例如持久性、选择器等)结合使用时,存在大量没有意义的特性。我们发现,在消息传递产品之上编写我们自己的简单 api 相当容易,并且让用户可以灵活地在以后更改产品,并将我们从 JMS api 的一些庞大和冗长中解放出来。

    另一个需要考虑的选项是JGroups

    29West 在其消息传递产品线中添加了 JMS 支持。

    【讨论】:

    • 谢谢 - 我们通常没有过多的容量或严格的延迟要求,我们之前的解决方案 Fiorano 运行良好。不幸的是,公司标准规定了 IBM MQ :(
    【解决方案2】:

    关于“用于 MQ 调优的指针”,SupportPacs page 上有每个平台的性能评估和具体建议。向下滚动到名为 MP* 的 SupportPacs 并查找适当的版本和平台。使用大小消息、持久和非持久消息、getter 和 putter 数量的变化等测试各种场景。

    【讨论】:

      【解决方案3】:

      作为 LLM 产品的前开发人员,我可以说它做到了,或者至少做到了。下面是我从公开的信息中心摘录的 2.6 版本

      也就是说,我记得 MQ 的全部意义在于保证交付。这样做是有时间和地点的,但它是以延迟和带宽为代价的。

      LLM 从根本上具有不同的目的;它具有可靠的交付:也就是说,如果它未能交付,您只会知道它未能交付。这些消息的可恢复性仅受您愿意保留多少缓存或从磁盘召回以及您愿意在等待恢复过程中等待恢复多长时间的限制。在您的情况下,您可能不关心恢复。 LLM 是否适合您,我无法推测。我能说的是,从我作为过去的开发人员和后来的客户的角度来看,我发现两者之间几乎没有相似之处,而且这种应用程序的 LLM 性能完全将 MQ 吹得水泄不通。我也从未经常使用 java/jms 方面,而是专注于 C/C++,所以对此持保留态度。我只知道它做到了,以及在 google 中查找的位置。

      http://www-01.ibm.com/support/knowledgecenter/SSQPD3_2.6.0/com.ibm.wllm.doc/api/javadoc/messaging/com/ibm/llm/jms/package-summary.html

      包 com.ibm.llm.jms 说明

      为 LLM JMS 客户端实现提供者特定的公共类。

      JMS中使用的大部分接口都是由通用JMS定义的 接口。但是,JMS 规范不包括 配置 JMS 客户端所需的类和接口。

      有关 JMS 类的信息,请参阅 JMS API 文档 和方法。

      简介

      LLM JMS 客户端提供一个 Java 消息服务 (JMS) 接口来 法学硕士。使用 LLM 的 JMS 接口允许与 其他消息传递提供商,并通过以下方式加速应用程序开发 允许开发人员使用他们熟悉的接口。使用 JMS 接口最适合使用泛型的应用程序 可以集中管理设置的消息传递功能。 这包括许多传统的客户端应用程序。 LLM JMS 客户端 在应用程序依赖于 LLM 的情况下效果不佳 特定功能或需要大量应用 与 LLM 的互动。虽然使用 JMS 接口,它仍然提供非常低的延迟和高吞吐量 消息传递。

      LLM JMS 客户端支持大部分 LLM 客户端功能,但不支持 支持在层内运行或作为负载的服务器功能 平衡变送器。

      法学硕士基于直接生产者到消费者的消息传递。 JMS 是 通常使用消息服务器和 JMS 功能实现 使用 LLM JMS 时需要消息服务器不可用 客户。这包括所有点对点消息传递(队列)以及 恢复功能。 LLM JMS 客户端设计为在 JSE 中运行 环境并且不支持应用程序服务器扩展或 XA 交易。

      LLM JMS 客户端如何实现 JMS

      LLM JMS 客户端通过以下方式实现每个基本 JMS 对象 不对外公开的实现类。这 这些对象的子类使用相同的实现 实现类。这意味着只有两个管理 对象、ConnectionFactory 和 Destination。定义的 LLM ConnectionFactory 可以强制转换为 TopicConnectionFactory 和 QueueConnectionFactory,并且可以将 LLM 定义的 Destination 强制转换为 主题和队列。 Connection、Session、 消息生产者和消息消费者。来自一个的 Destination 对象 提供者必须与同一提供者的连接一起使用。然而, 可以将由一个 JMS 提供者生成的消息发送到 另一个 JMS 提供程序。发送由另一个 JMS 创建的消息 提供者不如发送由 LLM 创建的消息高效 JMS 客户端,但提供此功能是为了方便 应用程序从一个提供商到另一个提供商。

      LLM JMS 客户端未实现点对点消息传递 模型(队列),但可以创建所有 JMS 对象。

      LLM JMS 客户端需要至少 Java 5 的 JVM。

      LLM JMS 客户端定义了所有六种消息类型对象(Message、 BytesMessage、MapMessage、ObjectMessage、StreamMessage 和 短信)。当从 JMS 向 JMS 发送消息时,JMS 标头 表示消息的类型。如果缺少 JMS 标头(即 从非 JMS 生产者发送消息时常见)LLM JMS 客户端尝试从内容中推断出消息的类型。 通常消息将显示为 BytesMessage,但如果消息 以 UTF-8 BOM 开头或看起来是 XML,它将被解释为 一条短信。 TextMessages 被假定为 UTF-8 编码......

      【讨论】:

        猜你喜欢
        • 2019-07-18
        • 2014-09-27
        • 2011-03-27
        • 1970-01-01
        • 1970-01-01
        • 2015-01-09
        • 2012-05-08
        • 2014-08-01
        • 2012-08-27
        相关资源
        最近更新 更多