我有一个进程,它使用JMSTemplate根据JMS值从MQ队列中有选择地出队。
当出队查询匹配队列前面的消息时,出队速率大约为60-70 msg/秒。但是,当查询匹配的消息深度仅为50、100或200条时,出队率将降至1 msg / 3-4秒。
快速出队查询是ThreadId='24' or ThreadId='PRIMARY'。较慢的出队查询是ThreadId='24'。
处理时间慢的真正原因可能是其他原因,但我观察到处理时间的变化只是取消选择查询的变化。
我怀疑这种处理速度是不寻常的。会出什么问题呢?
发布于 2012-05-29 18:33:38
实际上并不推荐通过headers查询深度队列,因为headers没有索引。这可能就是问题所在。对CorrelationId和MessageId的查询(如果它们的格式是‘ID:48-十六进制数字’)将被编入索引,并且速度非常快(大约1ms/查询非常深的队列,取决于设置)。
我们也遇到了这个问题,并选择在相关id头中编码相关标识符,而不是在JMS字符串属性(MQRFH2/usr)头中编码。
这是在MQ 7.0上
https://stackoverflow.com/questions/10794521
复制相似问题