【问题标题】:Monitoring JMS queues in WAS在 WAS 中监控 JMS 队列
【发布时间】:2017-09-18 12:27:56
【问题描述】:

一点背景:我需要提高我们的批处理框架之一的性能。在那里,批处理输入被发送到 JMS 队列。此外,在队列端点,我们有一个 MDB,它正在使用消息。现在,我在这里怀疑,如果有大量消息,则没有 MDB 实例可用于使用这些消息,因为所有这些消息都在处理先前的消息时被搁置。为了改进这一点,我正在考虑在 MDB 业务逻辑中实现一个线程池,这样一旦 MDB 收到消息并将其传递给线程,它就可以免费使用另一条消息。

现在在实现此之前,我想监控我的 JMS 队列以检查消息是否真的在队列中等待。所以我需要知道这个监控是否可以通过一些 WAS 管理控制台或一些 JMX 应用程序来完成。我的主要目的是检查队列中每条 jms 消息的等待时间。

【问题讨论】:

  • 在开始实现一些复杂的逻辑之前,您必须知道消息顺序是否对您至关重要,可以使用持久/非持久消息。检查“每个端点的最大并发 MDB 调用”的当前设置,通过 PMI 检查运行了多少并发 MDB 以及 onMessage 平均响应时间是多少。您还可以使用“最大批量大小”设置来检查它是否会产生任何影响。
  • @Gas 对不起,我不擅长缩写。这是什么PMI?是的,顺序并不重要,因为队列中的消息是由线程池从平面文件中放入的,线程池可以按任意随机顺序排列。
  • PMI 是性能监控基础架构,内置 WAS 功能,可让您监控各种事物。在 WebSphere 知识中心查找更多详细信息。

标签: jms websphere jmx


【解决方案1】:

首先,您可以设置并行使用 Q 的进程数(MDB 实例)。默认值为 10(每个集群成员..)。
使用控制台:Resources -> JMS -> activation specifications,设置"Maximum concurrent MDB invocations per endpoint",其定义为`"同时传递消息的最大端点数。"``

至于监控Q和产生一些负载,你可以看看JMSToolBox on sourceforge

在 JMSToolBox 的“目的地信息”对话框中,您还可以看到 Q 上的并发消费者数量

此外,如果您想测量 Q 中的消息所花费的时间,只需从 MDB 在 onMessage() 方法中处理的消息中计算当前时间与 JMSTimestamp JMS 标准属性之间的差异

【讨论】:

    猜你喜欢
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多