在JMeter中,如何向JMS发布者发送4字节消息

时间:2018-07-09 04:47:01

标签: jmeter jms activemq jms-topic

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

我必须对使用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。

以下是配置:

enter image description here

由于我必须发送字节流,因此我认为应该使用文件中的ByteMessage。 enter image description here

我在配置文件中尝试了以上内容。但非会给我[0,100,3,214]。

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

如果我有?在文本文件中,我得到[63,63,63,63](因为?==> 00111111 ==> 63以十进制表示)。 但是,如果我必须将第一个字节设置为0,我将无法通过?由于没有字符,我无法代表0。

可能存在更好的方法。请指教吗?

1 个答案:

答案 0 :(得分:1)

查看JMS Sampler JavaDoc时,migrate.exe --conn="Server=.;Database=my_db;Trusted_Connection=True;Encrypt=True;Connection Timeout=30;" --provider=SqlServer --assembly="MyMigrations.dll" --tag="localhost" --task=migrate --output --outputFilename="src\migrated.sql" 函数仅接受String,因此无法将字节传递给此字符串,因为JMeter会将它们视为简单字符串。

不过,根据JMS Publisher documentation,您应该可以发送所需的任何内容,前提是该对象已由XStream进行了序列化

  

对象消息已实现,其工作方式如下:

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

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

  •   
  • 要么将结果放入带有.txt或.obj后缀的文件中,要么直接将XML内容放入“文本区域”中

  •   
     

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

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