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

新手求助:如何用JMeter或LoadRunner基于AMQP协议测试ActiveMQ Artemis

用AMQP协议测试ActiveMQ Artemis(JMeter & LoadRunner 实操指南)

一、JMeter 测试步骤

1. 准备依赖包

  • 从ActiveMQ Artemis安装目录里找到artemis-amqp-protocol-xxx.jar(xxx为对应版本号)、netty-all-xxx.jar、proton-j-xxx.jar这几个核心包,复制到JMeter的lib/ext目录下,重启JMeter生效。

2. 配置测试计划

  • 新建测试计划,添加线程组(按需设置并发数、循环次数等参数)。
  • 线程组下添加AMQP Connection Configuration元件:
    • 填写Broker地址:格式为amqp://[用户名]:[密码]@[IP]:[端口],默认AMQP端口是5672。
    • 连接超时、心跳间隔这些参数新手用默认值即可。

3. 添加消息发送/接收元件

发送消息:

  • 线程组下添加AMQP Publisher元件:
    • 填写目标地址(Queue或Topic名称,格式如queue://testQueue)。
    • 设置消息内容:可直接写固定字符串,或用JMeter函数生成随机内容,比如${__RandomString(10,abcdefghijklmnopqrstuvwxyz,)}。
    • 可选配置:消息持久化、优先级等属性。

接收消息:

  • 线程组下添加AMQP Consumer元件:
    • 填写与发送端一致的目标地址。
    • 设置接收超时时间(比如5000毫秒),超时未收到消息会标记为失败。
    • 可选配置:是否自动确认消息。

4. 添加监听器

  • 添查看结果树、聚合报告等监听器,用于查看测试结果、吞吐量、响应时间等性能数据。

5. 运行测试

  • 点击运行按钮,通过监听器排查连接失败、消息收发失败等问题(常见原因:账号密码错误、Broker端口未开放、协议未启用)。

二、LoadRunner 测试步骤

1. 选择协议

  • 打开LoadRunner Virtual User Generator(VuGen),新建脚本时选择Custom > AMQP协议(若找不到需安装对应插件,LoadRunner默认支持AMQP)。

2. 编写核心脚本

初始化连接(vuser_init()):

amqp_connection_params_t conn_params;
amqp_connection_handle_t conn;

// 初始化连接参数
memset(&conn_params, 0, sizeof(conn_params));
conn_params.host = "你的Broker IP";
conn_params.port = 5672;
conn_params.username = "用户名";
conn_params.password = "密码";
conn_params.vhost = "/"; // 默认虚拟主机

// 建立连接
conn = amqp_connect(&conn_params);
if (conn == AMQP_CONN_HANDLE_INVALID) {
    lr_error_message("连接Broker失败");
    return -1;
}

发送消息(Action()):

amqp_message_t msg;
amqp_basic_properties_t props;

// 初始化消息属性
memset(&props, 0, sizeof(props));
props._flags = AMQP_BASIC_CONTENT_TYPE_FLAG | AMQP_BASIC_DELIVERY_MODE_FLAG;
props.content_type = amqp_cstring_bytes("text/plain");
props.delivery_mode = 2; // 持久化消息

// 设置消息内容
msg.body = amqp_cstring_bytes("测试消息内容");
msg.body_len = strlen("测试消息内容");

// 发送到指定队列
if (amqp_basic_publish(conn, "", amqp_cstring_bytes("testQueue"), 0, 0, &props, &msg) != AMQP_STATUS_OK) {
    lr_error_message("发送消息失败");
}

接收消息(Action()):

amqp_envelope_t envelope;
amqp_status_t status;

// 订阅目标队列
status = amqp_basic_consume(conn, "", amqp_cstring_bytes("testQueue"), amqp_empty_bytes, 0, 1, 0, amqp_empty_table);
if (status != AMQP_STATUS_OK) {
    lr_error_message("订阅队列失败");
    return -1;
}

// 接收消息
status = amqp_consume_message(conn, &envelope, NULL, 0);
if (status == AMQP_STATUS_OK) {
    lr_output_message("收到消息:%.*s", envelope.message.body.len, (char*)envelope.message.body.bytes);
    amqp_destroy_envelope(&envelope);
} else {
    lr_error_message("接收消息失败");
}

关闭连接(vuser_end()):

amqp_close_connection(conn, AMQP_REPLY_SUCCESS);

3. 调试与场景配置

  • 点击“Run”调试脚本,根据报错调整参数;调试通过后,在LoadRunner Controller中创建场景,设置并发用户数、运行时间等,运行后查看性能指标。

三、新手必看注意事项

  • 确认ActiveMQ Artemis已启用AMQP协议:检查Broker的broker.xml配置文件,确保<acceptor>节点包含AMQP配置,比如<acceptor name="amqp">tcp://0.0.0.0:5672?protocols=AMQP</acceptor>。
  • 测试前先用AMQP客户端(如qpid-tools)手动验证Broker连通性,排除Broker本身的问题。
  • 并发测试时注意Broker的资源限制(内存、磁盘),避免压垮服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:00:57