构建 JMS 主题测试计划
JMS 需要下载一些可选的 jar。请参阅 入门 了解完整的详细信息。
在本节中,你将学习如何创建 测试计划 来测试 JMS 提供程序。你将创建五个订阅者和一个发布者。你将创建 2 个线程组并将每个线程组设置为 10 次迭代。消息总数为(6 个线程)x(1 条消息)x(重复 10 次)= 60 条消息。要构建测试计划,你将使用以下元素: 线程组 、 JMS 发布 者、 JMS 订阅者 和 图表结果 。
关于 JMS 的一般说明:目前有两个 JMS 采样器。一种使用 JMS 主题,另一种使用队列。主题消息通常称为发布/订阅消息。主题消息传递通常用于消息由生产者发布并由多个订阅者消费的情况。队列消息传递通常用于发送方期望响应的事务。消息系统与普通的 HTTP 请求完全不同。在 HTTP 中,单个用户发送请求并获得响应。消息系统可以工作在同步和异步模式。JMS 采样器需要 JMS 实现 jar 文件;例如,来自 Apache ActiveMQ。有关 ActiveMQ 提供的 jar 列表,请参见 此处 。
11.1 添加用户
第一步是添加一个 线程组 元素。线程组告诉 JMeter 你想模拟的用户数量,用户应该多久发送一次请求,以及他们应该发送多少请求。
继续添加 ThreadGroup 元素,首先选择 Test Plan,单击鼠标右键以获取 Add 菜单,然后选择 Add → ThreadGroup
。
你现在应该在测试计划下看到线程组元素。如果你没有看到该元素,则通过单击测试计划
元素展开
测试计划树。
接下来,你需要修改默认属性。如果尚未选择树中的线程组元素,请选择它。你现在应该在 JMeter 窗口的右侧看到线程组控制面板(参见下面的图 11.1)
图 11.1。具有默认值的线程组
首先为我们的线程组提供一个更具描述性的名称。在名称字段中,输入 Subscribers。
接下来,将用户数(称为线程)增加到 5。
在下一个字段 Ramp-Up Period 中,将值设置为 0 秒。该属性告诉 JMeter 在启动每个用户之间延迟多长时间。例如,如果你输入 5 秒的 Ramp-Up Period,JMeter 将在 5 秒结束时完成启动所有用户。因此,如果我们有 5 个用户和 5 秒的 Ramp-Up Period,那么启动用户之间的延迟将为 1 秒(5 个用户 / 5 秒 = 1 个用户/秒)。如果将值设置为 0,JMeter 将立即启动所有用户。
清除标记为Forever
的复选框,并在 Loop Count 字段中输入值 10 。此属性告诉 JMeter 重复测试多少次。如果你输入循环计数值 0,那么 JMeter 将只运行一次测试。要让 JMeter 重复运行你的测试计划,请选中 Forever 复选框。
重复该过程并添加另一个线程组。对于第二个线程组,在名称字段中输入Publisher
,将线程数设置为 1,并将迭代设置为 10。
在大多数应用程序中,你必须手动接受你在控制面板中所做的更改。但是,在 JMeter 中,控制面板会在你进行更改时自动接受你的更改。如果更改元素的名称,则在离开控制面板后(例如,选择另一个树元素时),将用新文本更新树。
11.2 添加 JMS 订阅者和发布者
确保所需的 jar 文件位于 JMeter 的 lib 目录中。如果不是,请关闭 JMeter,复制 jar 文件并重新启动 JMeter。
首先将采样器 JMS 订阅 者添加 到订阅者元素(Add → Sampler → JMS Subscriber)。然后,在树中选择 JMS 订阅者元素并编辑以下属性:
将名称字段更改为
示例订阅者
如果 JMS 提供程序使用 jndi.properties 文件,请选中该框
输入 InitialContextFactory 类的名称。例如,对于 ActiveMQ 5.4,值为
org.apache.activemq.jndi.ActiveMQInitialContextFactory
输入提供者 URL。这是 JNDI 服务器的 URL(如果有)。例如,使用默认端口的本地计算机上的 ActiveMQ 5.4,值为
tcp://localhost:61616
输入连接工厂的名称。有关信息,请参阅 JMS 提供程序的文档。对于 ActiveMQ,默认为
ConnectionFactory
输入消息主题的名称。对于 ActiveMQ 动态主题(动态创建主题),示例值为
dynamicTopics/MyStaticTopic1
注意:启动时设置意味着 JMeter 在测试开始时开始侦听目标,而不会更改名称。在每个样本上设置意味着 JMeter(重新)在运行每个 JMS 订阅者样本之前开始侦听,最后一个选项允许使用带有一些 JMeter 变量的目标名称
如果 JMS 提供者需要身份验证,请选中
required
并输入用户名和密码。例如,Orion JMS 需要身份验证,而 ActiveMQ 和 MQSeries 不需要在
要聚合的样本数
中输入 10。出于性能原因,采样器将聚合消息,因为小消息会很快到达。如果采样器没有聚合消息,JMeter 将无法跟上。如果你想阅读回复,请选中该框
订阅者有两种客户端实现。如果 JMS 提供者在一个客户端上出现僵尸线程,请尝试另一个。
图 11.2。JMS 订阅者
接下来将采样器 JMS Publisher 添加 到 Publisher 元素()。然后,在树中选择 JMS Publisher 元素并编辑以下属性:
将名称字段更改为
示例发布者
。如果 JMS 提供程序使用 jndi.properties 文件,请选中该框
输入 InitialContextFactory 类的名称。例如,对于 ActiveMQ 5.4,值为
org.apache.activemq.jndi.ActiveMQInitialContextFactory
输入提供者 URL。这是 JNDI 服务器的 URL(如果有)。例如,使用默认端口的本地计算机上的 ActiveMQ 5.4,值为
tcp://localhost:61616
输入连接工厂的名称。有关信息,请参阅 JMS 提供程序的文档。对于 ActiveMQ,默认为
ConnectionFactory
输入消息主题的名称。对于 ActiveMQ 动态主题(动态创建主题),示例值为
dynamicTopics/MyStaticTopic1
。注意:启动时设置意味着 JMeter 在测试开始时开始与目标连接,而不会更改名称。在每个示例上设置意味着 JMeter 在运行每个 JMS Publisher 示例之前(重新)启动连接,最后一个选项允许使用带有一些 JMeter 变量的目标名称
如果 JMS 提供者需要身份验证,请选中
required
并输入用户名和密码。例如,Orion JMS 需要身份验证,而 ActiveMQ 和 MQSeries 不需要在
要聚合的样本数
中输入 10。出于性能原因,采样器将聚合消息,因为小消息会很快到达。如果采样器没有聚合消息,JMeter 将无法跟上。选择适当的配置以获取要发布的消息。如果你希望采样器随机选择消息,请将消息放在目录中,然后使用浏览选择目录。
选择消息类型。如果消息是对象格式或映射消息,请确保正确生成消息。
图 11.3。JMS 发布者
11.3 添加监听器以查看存储测试结果
你需要添加到测试计划的最后一个元素是 Listener 。此元素负责将 HTTP 请求的所有结果存储在文件中并呈现数据的可视化模型。
选择 Test Plan 元素并添加一个 Graph Results 侦听器(Add → Listener → Graph Results)。接下来,你需要指定输出文件的目录和文件名。你可以在文件名字段中键入它,或者选择浏览
按钮并浏览到一个目录,然后输入一个文件名。
图 11.4。图表结果监听器