如何使用JMeter对Azure Service Bus JMS监听进行性能测试?
解决JMeter测试Azure Service Bus JMS消费者的配置问题
一、处理ClassNotFoundException错误
你遇到的ClassNotFoundException: org.apache.qpid.jms.jndi.JmsInitialContextFactory,核心原因是JMeter的lib目录缺少Qpid JMS客户端依赖包。你的Spring项目通过spring-cloud-azure-starter-servicebus-jms间接引入了该依赖,但JMeter不会自动加载项目依赖,需手动补充:
- 从本地Maven仓库找到
qpid-jms-client对应的jar包(与spring-cloud-azure-starter-servicebus-jms 5.6.0兼容的版本为2.10.x系列),或直接下载对应版本的qpid-jms-client.jar - 将jar包复制到JMeter安装目录的
/lib文件夹中 - 重启JMeter,该错误即可解决
二、JMeter JMS点对点采样器(队列场景)配置
因为你使用的是Azure Service Bus队列(点对点模式),选择JMS点对点采样器,按以下参数配置:
1. 初始上下文设置
- 初始上下文工厂:
org.apache.qpid.jms.jndi.JmsInitialContextFactory(注意类名是JmsInitialContextFactory,不要遗漏前缀) - 上下文参数(点击"添加"按钮添加键值对):
- 键:
connectionfactory.SBCF,值:Azure Service Bus的AMQP格式连接字符串,示例:
(可从Azure门户获取Service Bus连接字符串,提取命名空间、策略名、密钥替换占位符)amqps://<你的命名空间>.servicebus.windows.net?jms.username=<共享访问策略名称>&jms.password=<共享访问策略密钥> - 键:
queue.MY_QUEUE,值:你的目标队列名称(如log-collection-queue)
- 键:
2. 采样器核心配置
- 连接工厂:
SBCF(需与上下文参数中connectionfactory.后的后缀一致) - 目标:
MY_QUEUE(需与上下文参数中queue.后的后缀一致) - 超时:根据业务场景设置,比如30000毫秒(30秒)
- 消息选择器:如需过滤特定消息,填写JMS选择器表达式,否则留空
三、性能测试流程
- 添加线程组,设置并发用户数、循环次数等测试参数
- 在线程组下添加JMS点对点采样器,按上述配置填写参数
- 添加监听器(如查看结果树、聚合报告),用于查看请求响应和性能指标
注意事项
- 确保JMeter使用的Java版本与Spring应用一致,避免版本兼容性问题
- Azure Service Bus的共享访问策略需具备**监听(Listen)**权限,否则无法拉取队列消息
- 若测试Service Bus主题(发布订阅模式),选择JMS订阅者采样器,配置逻辑类似,需额外指定主题名称和订阅名称
内容的提问来源于stack exchange,提问作者Cdac15655482
相关产品推荐
相关产品推荐

