You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter通过amqps协议向Amazon MQ发消息报错,求解决方法

解决JMeter通过AMQPS协议发送消息到Amazon MQ(ActiveMQ引擎)的问题

问题根源

你遇到的Transport scheme not recognised: [amqps]报错,核心原因是当前使用的org.apache.activemq.jndi.ActiveMQInitialContextFactory是ActiveMQ OpenWire协议专用的JNDI工厂,它只支持tcp、ssl这类OpenWire的传输协议,无法识别AMQP协议的amqps(AMQP over SSL) scheme。

解决方案步骤

1. 替换Initial Context Factory

将JNDI初始上下文工厂改为Qpid JMS对应的实现:

org.apache.qpid.jms.jndi.JmsInitialContextFactory

2. 调整Provider URL与连接工厂配置

Qpid JMS的JNDI配置格式和ActiveMQ不同,你需要调整Provider URL或通过JNDI属性配置连接工厂:

  • 方式1:直接在Provider URL中指定连接工厂参数(推荐)

    connectionfactory.ConnectionFactory=amqps://broker-url:5671?transport.trustAll=true&user=your-username&password=your-password
    

    其中:

    • transport.trustAll=true:测试环境可临时跳过证书验证(生产环境建议导入Amazon MQ的CA证书到JMeter的JVM信任库)
    • user和password:填写Amazon MQ的认证凭据
  • 方式2:通过单独的JNDI属性文件配置
    在JMeter的bin目录下创建jndi.properties文件,内容如下:

    java.naming.factory.initial=org.apache.qpid.jms.jndi.JmsInitialContextFactory
    connectionfactory.ConnectionFactory=amqps://broker-url:5671
    ConnectionFactory.userName=your-username
    ConnectionFactory.password=your-password
    ConnectionFactory.transport.trustAll=true
    dynamicTopics.topicname=topic://topicname
    

    然后在JMeter的Provider URL中填写file:jndi.properties

3. 清理冲突依赖

由于你同时引入了ActiveMQ Client和Qpid JMS的jar包,可能存在协议实现冲突:

  • 移除ActiveMQ Client相关的jar包(如activemq-client-5.17.6.jar),仅保留Qpid JMS及其依赖:
    • qpid-jms-client-2.5.0.jar
    • geronimo-jms_2.0_spec-xxx.jar
    • Netty系列依赖(Qpid JMS依赖的netty-all、netty-handler等)
    • slf4j-api-xxx.jar(日志依赖)

4. 验证配置

调整JMeter的JMS Publisher Sampler配置:

  • Initial Context Factory:org.apache.qpid.jms.jndi.JmsInitialContextFactory
  • Provider URL:按方式1或方式2填写
  • ConnectionFactory:ConnectionFactory
  • Destination:topicname(如果用jndi.properties配置了dynamicTopics,直接填名称即可)
  • 取消勾选Use Authorization(因为凭据已在连接URL或JNDI属性中配置,避免重复认证)

关键说明

  • AMQPS是AMQP协议的SSL版本,必须使用Qpid JMS客户端实现,不能用ActiveMQ的OpenWire客户端
  • 生产环境不要用transport.trustAll=true,需将Amazon MQ的CA证书导入到JMeter使用的JVM信任库(路径通常是JRE/lib/security/cacerts,使用keytool命令导入)

内容的提问来源于stack exchange,提问作者shivan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 02:23:25