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

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

由于 IBM 有一个 低延迟产品, ,我想知道这是否可能是更好的解决方案 - 但它似乎没有 JMS api,或者至少不容易看到。

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

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

有帮助吗?

解决方案

这绝对是一个低延迟消息产品会更适合您的问题,我的工作,我们做的非常相似,从使用的 29West公司。它没有一个JMS API和我怀疑大部分产品在低延迟空间不会。有大量的功能,没有意义,结合这些类型的产品(例如持久性,选择等)。我们发现,在通讯产品的顶部编写我们自己的简单的API是相当容易的,并给出使用的灵活性,以后更改产品和一些JMS API的体积和冗长的释放我们。

要考虑的另一选择是 JGroups的

29West公司已经添加JMS支持他们的消息传递的产品线。

其他提示

关于“MQ 调整的指针”,在 支持包页面 每个平台都有性能评估和具体建议。向下滚动到名为 MP* 的 SupportPac,然后查找适当的版本和平台。使用大消息和小消息、持久性和非持久性消息、getter 和 putters 数量的变化等对各种场景进行了测试。

作为法学硕士产品的前开发人员,我可以说它确实如此,或者至少确实如此。请参阅下面我从公开信​​息中心获取的 2.6 版本的摘录

也就是说,根据我的记忆,MQ 的重点是 保证交货. 。这是有时间和地点的,但它会以延迟和带宽为代价。

LLM 从根本上有不同的目的;它有 可靠的交付: :也就是说,如果它未能交付,您只会知道它未能交付。这些消息的可恢复性仅受限于您愿意保留缓存或从磁盘调用的数量,以及您愿意在暂停进程时容忍等待恢复的时间。就您而言,您可能不关心恢复。我无法推测LLM是否适合您。我能说的是,从我作为过去的开发人员和后来作为客户的角度来看,我发现两者之间几乎没有相似之处,而且 LLM 对于此类应用程序的性能完全让 MQ 脱颖而出。我也从未过多使用过 java/jms 方面,而是专注于 C/C++,因此对此持保留态度。我只知道它做到了以及在谷歌中查找的位置。

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客户端向LLM提供JAVA消息服务(JMS)接口。使用JMS接口到LLM,可以与其他消息传递提供商进行通用的接口,并通过允许开发人员使用熟悉的接口来加快应用程序开发的速度。使用JMS接口最适合使用通用消息功能的应用程序,可以将设置可以集中管理。这包括许多传统的客户端应用程序。LLM JMS客户端在应用程序取决于LLM特定功能或需要与LLM的大量应用相互作用的情况下无法正常工作。尽管使用JMS接口添加了一些延迟,但它仍然提供非常低的延迟和高吞吐量消息。

LLM JMS客户端支持大多数LLM客户端功能,但不支持在层中运行的服务器功能,也不支持负载余额发射器。

LLM 的基础是直接向生产者传递消息。JMS通常使用消息服务器和JMS函数实现,该功能使用LLM JMS客户端时不可用的消息服务器。这包括所有点对点消息(队列)以及恢复功能。LLM JMS客户端旨在在JSE环境中运行,并且不支持应用程序服务器扩展或XA事务。

LLM JMS客户端如何实现JMS

LLM JMS客户端使用未在外部暴露的实现类实现每个基本JMS对象。这些对象的子类使用相同的实现类实现。这意味着只有两个管理的对象,ConnectionFactory和Destination。LLM定义的ConnectionFactory可以将其投入到主题ConnectionFactory和QueueConnectionFactory中,并且可以将LLM定义的目的地施放为主题和队列。连接,会话,MessageProducer和MessageConsumer也是如此。一个提供商的目标对象必须与同一提供商的连接一起使用。但是,可以将一个JMS提供商生成的消息发送给另一个JMS提供商。发送另一个JMS提供商创建的消息并不像发送LLM JMS客户端创建的消息那样有效,但是提供此功能是为了使应用程序可以轻松地从一个提供商桥接到另一个提供商。

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

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

LLM JMS客户端定义了所有六个消息类型对象(消息,字节,mapmessage,objectMessage,creammessage和textMessage)。当将消息从JMS发送到JMS时​​,JMS标头表示消息的类型。如果丢失JMS标头(这是从非JMS生产者发送消息时常见的)LLM JMS客户端试图从内容中推导消息的类型。通常,该消息将显示为字节,但是如果消息以UTF-8 BOM开头或似乎是XML,则将被解释为文本介绍。假定文本消息以 UTF-8 编码......

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top