2017-04-21 80 views
0

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

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

+0

在开始实施一些复杂逻辑之前,您必须知道消息顺序对您是否至关重要,可以使用持久性/非持久性消息。检查“每个端点最大并发MDB调用”的当前设置,通过PMI检查运行的并发MDB数量以及onMessage平均响应时间。您也可以使用“最大批量大小”设置来检查它是否会产生任何影响。 – Gas

+0

@Gas对不起,我的缩写不好。这是什么PMI?是的,订单并不重要,因为队列中存在的消息是由线程池中的平面文件放置的,线程池可以是任意顺序。 –

+0

PMI是性能监控基础架构,内建WAS功能,可让您监控各种事物。在WebSphere Knowledge Center中查找更多详细信息。 – Gas

回答

0

首先,您可以设置将并行使用Q的进程数(MDB实例)。默认值是10(群集的每个成员..)。
与控制台:Resources -> JMS -> activation specifications,设置"Maximum concurrent MDB invocations per endpoint"被定义为'。“消息所并发传送的终点的最大数量”``

至于监测Q和产生一些负荷,你可以去看看在JMSToolBox on sourceforge

在JMSToolBox“目标信息”对话框中,你也可以看到并发用户的数量上Q

此外,如果你想测量在Q通过信息的时间花费,只需计算当前时间与JMS站点之间的差异即可ndard属性来自MDB在onMessage()方法中处理的消息