首页 > 解决方案 > 在 JMeter 中,如何向 JMS 发布者发送 4 字节消息

问题描述

不要以为这是专门问这个的。

我必须对使用 ActiveMQ 主题的应用程序运行性能测试。采样器需要将 4 字节的数据发布到主题中,通常格式为(如果您查看十六进制值)0x006403D6。

如果将它们转换为小数,它们将是

0x03D6 = 00000011 11010110 ==> 982 ==> 03,D6 ==> 03, 214 ==> 3,214 0x0064 = 00000000 01100100 ==> 100 ==> 00,64 ==> 00, 100 ==> 0,100

所以上面的例子中 4 个字节是 [0,100,3,214]。

为了完成这项工作,我使用了 JMSPublisher。

下面是配置:

在此处输入图像描述

因为我必须发送一个字节流,所以我想使用文件中的 ByteMessage。 在此处输入图像描述

我在上面尝试了配置文件中的不同内容。但 non 会给我 [0,100,3,214]。

看起来 JMeter 确实将文本、字符转换为字节值。因此,如果我有一个空文件,主题将显示为 0,应用程序会将其视为 [0,0,0,0](应用程序仅考虑前 4 个字节)

如果我有 ????在文本文件中我得到 [63,63,63,63] (作为 ? ==> 00111111 ==> 63 十进制)。但是如果我必须让第一个字节为 0,我无法通过它吗?因为我找不到代表 0 的字符。

可能有更好的方法来做到这一点。请指教 ?

标签: jmeterjmsactivemqjms-topic

解决方案


查看JMS Sampler JavaDoc,该setContent()函数仅接受 String ,因此无法将字节传递给它,因为 JMeter 会将它们视为简单字符串。

但是,根据JMS Publisher 文档,您应该能够发送您想要的任何内容,因为该对象已由XStream序列化

Object 消息的实现和工作方式如下:

  • 将包含您的对象及其依赖项的 JAR 放在 jmeter_home/lib/ 文件夹中

  • 使用 XStream 将对象序列化为 XML

  • 将结果放入以 .txt 或 .obj 为后缀的文件中,或将 XML 内容直接放入文本区域

请注意,如果消息在文件中,则不会发生属性替换,而如果您使用文本区域则会发生。

另请注意,您始终可以切换到JSR223 Sampler并使用Groovy代码中的ByteMessage类。


推荐阅读