11. 构建 JMS 主题测试计划¶
在本节中,您将学习如何创建 测试计划来测试 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,单击鼠标右键以获取
菜单,然后选择 。您现在应该在测试计划下看到线程组元素。如果您没有看到该元素,则通过单击“测试计划”元素“展开”测试计划树。
接下来,您需要修改默认属性。如果尚未选择树中的线程组元素,请选择它。您现在应该在 JMeter 窗口的右侧看到线程组控制面板(参见下面的图 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。
11.2 添加 JMS 订阅者和发布者¶
确保所需的 jar 文件位于 JMeter 的lib目录中。如果不是,请关闭 JMeter,复制 jar 文件并重新启动 JMeter。
首先将采样器JMS 订阅者添加 到订阅者元素( )。然后,在树中选择 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 提供者在一个客户端上出现僵尸线程,请尝试另一个。
接下来将采样器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 添加监听器以查看存储测试结果¶
您需要添加到测试计划的最后一个元素是 Listener。此元素负责将 HTTP 请求的所有结果存储在文件中并呈现数据的可视化模型。
选择 Test Plan 元素并添加一个Graph Results侦听器( )。接下来,您需要指定输出文件的目录和文件名。您可以在文件名字段中键入它,或者选择“浏览”按钮并浏览到一个目录,然后输入一个文件名。