MQ有选择的出队速度有时令人沮丧

3
我有一个使用JMSTemplate的过程,可以根据JMS头值从MQ队列中选择性出列。当出列查询与队列前端的消息匹配时,出列速率约为60-70个消息/秒。然而,当查询仅匹配第50、100或200个消息时,出列速率会降至1个消息/3-4秒。
快速出列查询是ThreadId='24'或ThreadId='PRIMARY'。慢速出列查询是ThreadId='24'。
慢处理时间的真正原因可能是其他问题,但我观察到处理时间的变化只是由于取消选择查询的更改引起的。
我怀疑这种处理速度并不正常。可能出了什么问题?

1
你使用的MQ版本是什么?是6.x吗?v7.x有很多性能改进。你可能还想查看www-304.ibm.com/support/docview.wss?uid=swg27007197上建议的WMQ性能报告和调整。性能报告作为SupportPacs发布,名称前缀不同。 - Shashi
1个回答

3
查询深度队列时不建议使用头部信息,因为头部信息没有被索引。这可能是问题所在。如果CorrelationId和MessageId(如果它们的格式是“ID:48个十六进制数字”)上进行查询,则会被索引,并且非常快(在非常深的队列上每个查询约为1毫秒,具体取决于设置)。
我们也遇到了这个问题,并选择在关联标识符头部中编码关联标识符,而不是在JMS字符串属性(MQRFH2 / usr)头部中编码。
这是在MQ 7.0上的情况。

经过一些繁重的重构,但现在我正在使用相关 ID,速度非常快。非常感谢。 - Synesso
1
好的,你终于得到了性能。如果所有标头都有索引或者可以进行配置,WMQ将非常出色。现在有一些解决方法,谢谢。 - Petter Nordlander

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接