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

如何通过JMeter发送Stomp帧?ActiveMQ Artemis压测问题求助

针对ActiveMQ Artemis STOMP端口的负载测试采样器选择

可用的采样器选项

1. TCP采样器(适用,但需正确构造STOMP帧)

TCP采样器可以用来发送STOMP消息,因为STOMP本身是基于TCP的文本协议。但你的当前配置存在问题,导致读取错误:

  • 错误提示ReadException: Error reading from server, bytes read: 0通常意味着JMeter未收到代理响应,可能是STOMP帧格式不正确,或TCP采样器的结束符配置有误。
  • STOMP帧的结束符是空字节(^@,即ASCII 0),需在TCP采样器的「Advanced」标签中将eolByte设置为0,否则JMeter无法正确识别帧结束,导致等待超时。
  • 另外,SEND帧不需要version和session头,这些是CONNECT帧的专属内容,SEND帧仅需保留destination头即可。

修正后的STOMP帧示例:

CONNECT
accept-version:1.0,1.1,1.2
host:127.0.0.1
login:<你的用户名>
passcode:<你的密码>

^@
SEND
destination:/queue/test

{<data>}
^@

2. JMS Publisher采样器(可行,需正确配置StompJMS)

可以使用JMS Publisher采样器配合org.fusesource.stomp.jms.StompJmsInitialContextFactory,步骤如下:

  • 添加依赖:将stompjms-client的JAR包放入JMeter的lib目录,重启JMeter。
  • 配置JMS Publisher:
    • 初始上下文工厂:org.fusesource.stomp.jms.StompJmsInitialContextFactory
    • 提供URL:tcp://127.0.0.1:61623
    • 用户名/密码:填写你的Artemis认证信息
    • 目标:/queue/test
    • 连接工厂:ConnectionFactory(StompJMS默认连接工厂名称)
  • 注意:若Artemis启用严格STOMP认证,需确认是否需额外配置client-id等参数。

排查当前TCP采样器失败的关键点

  • 查看Artemis日志,确认是否收到CONNECT/SEND帧,是否存在认证或格式错误。
  • 开启TCP采样器的「Re-use connection」选项,避免每次采样重新建立连接(STOMP为长连接协议)。
  • 验证STOMP帧换行符:必须使用\n(LF),部分代理对\r\n(CRLF)换行符敏感。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 09:50:27