我有一个托管一些队列的 Apache ActiveMQ Artemis 服务器。 在 JMeter JMS Publisher 采样器的帮助下,我在队列 1 上发布一组具有某些特定 property1 和 valueX 的消息,并且应用程序向我提供对另一个队列 2 上的那些特定请求消息的响应消息,这些消息在 JMS 的 JMSCorrelationId 属性中具有 valueX消息头。我使用 JMS 订阅者采样器使用响应消息。
如果我只是“盲目”消费消息,而不在 JMS 订阅者采样器中使用 JMS 选择器,我可以在视图结果树(响应数据 -> 响应标头)中看到所消费的消息具有以下示例属性和值:
JMSCorrelationId 20240315165957905
我需要的是仅使用消息头中 JMSCorrelationId 属性中具有特定值(来自 JMeter 变量)的消息。
我不明白需要在 JMS Subscriber 属性中设置什么值,以便仅使用标头中具有特定 JMSCorrelationId 的消息。
我尝试在采样器的 JMS Selector 属性中使用它。
JMSCorrelationID = '${uniqueID}'
或
JMSCorrelationID = 'ID:${uniqueID}'
由于某种原因,JMS 订阅者采样器无法找到该消息,即使我看到它在队列中(使用 ActiveMQ Artemis 管理控制台)。
此外,我不知道如何调试此 JMS 订阅者采样器在选择器值中使用的静态值,因为我看不到它在 JMeter 日志文件中生成任何日志。
任何形式的见解将不胜感激。
尝试在
JMS 订阅者中选择“设置”下的
Each sample
框:
如果您 将 JMeter 日志记录详细程度提高到调试级别,则可以在 jmeter.log 文件中观察 JMeter 变量的值。
您还可以下载或查看 JMeter 源代码,在您喜欢的 IDE 中打开项目,在 JMSSampler.browseQueueForConclusion() 函数中设置断点,然后查看实际的 JMS Selector 值。