3

我有一个进程用于JMSTemplate根据 JMS 标头值选择性地从 MQ 队列中出列。

当 dequeue 查询匹配队列前面的消息时,dequeue 速率大约为 60-70 msg/秒。但是,当查询仅匹配深度为 50、100 或 200 条消息的消息时,出队率下降到 1 msg / 3-4 秒。

快速出队查询是ThreadId='24' or ThreadId='PRIMARY'. 慢出队查询是ThreadId='24'.

处理时间缓慢的真正原因可能是其他原因,但我观察到处理时间的变化只不过是取消选择查询的变化。

我怀疑这种处理速度并不常见。可能出了什么问题?

4

1 回答 1

3

不建议按标题查询深度队列,因为标题没有被索引。这可能是问题所在。CorrelationId 和 MessageId 上的查询(如果它们的格式为“ID:48-hex-digits”)将被编入索引并且速度非常快(约 1 毫秒/在非常深的队列上查询,具体取决于设置)。

我们也遇到了这个问题,并选择在相关 id 标头中而不是在 JMS 字符串属性 (MQRFH2/usr) 标头中编码相关标识符。

这是在 MQ 7.0 上

于 2012-05-29T10:33:37.617 回答