本主题介绍创建消息代理的一般过程。
章节目录:
添加代理
右键点击 Virtualize 或 SOAtest 服务器视图中的服务器,然后选择添加消息代理。
新的代理节点将添加到消息代理文件夹下,该节点一开始将被设置为禁用状态。在使用代理之前,需要对其进行配置。
要删除代理或文件夹,请右键点击该节点并选择删除。
如果删除包含代理的文件夹,代理将被取消部署并从服务器中删除。
还可以通过在服务器视图中的节点上点击右键并选择添加消息代理,直接在消息代理文件夹或子文件夹中创建代理。
系统化消息代理
您可以在服务器上的消息代理文件夹中创建子文件夹并组织其内容。
创建新文件夹
- 右键点击节点,然后选择新建文件夹。
- 在提示时为该文件夹指定一个名称。
重命名文件夹
右键点击文件夹并选择重命名。不能重命名服务器视图中的默认文件夹(如虚拟资产、消息代理等)。
移动文件夹
可以从右键点击菜单将文件夹或代理复制并粘贴到消息代理文件夹中的另一个文件夹中。还可以将子文件夹和代理拖放到其他子文件夹中。
配置代理
双击添加的节点,打开配置面板,并在以下选项卡中配置代理。完成后,您可以按照启用和禁用代理中的说明启用代理,然后按照录制来自消息代理的通讯报文中的说明开始录制。
常规选项卡
在常规选项卡,重命名代理并输入描述(可选)。此外,这里还显示了最后一个修改代理的用户的用户名。该用户名根据 Parasoft 首选项设置;如需更改用户名,请访问 Parasoft > 首选项 > Parasoft。
连接选项卡
在连接选项卡,指定代理监听消息的端点和已接收消息重定向的端点。对于每个要使用代理的端点,请执行以下操作:
- 点击添加。
- 选择适当的传输类型。
如下完成代理设置:
- HTTP 反向:请参阅HTTP 反向代理配置。
- HTTP 正向:请参阅HTTP 正向代理配置。
- JMS:请参阅JMS 配置。
- MQ:请参阅MQ 配置。
- 内部的:请参阅内部传输配置。内部代理可以将通讯报文导向虚拟资产或其他内部传输代理。这可以在部署复杂虚拟资产时减少队列的数量,并在内部路由时提高虚拟资产的性能。
- 在通讯报文文件字段中,指定当代理设置为录制模式时,要将捕获的通讯报文数据保存的位置。稍后可以使用该通讯报文文件生成表示以录制模式捕获到的实时通讯报文的虚拟资产。请参阅在远程服务器和本地机器之间传输文件以获得访问录制的通讯报文文件的简单方法。
- 默认情况下,通讯报文将录制在一个名为 %n_%d_%t.txt (<proxy_name>_<current_date>_<current_time>.txt) 的文件中。它将存储在
recorded_traffic
文件夹中(如果不存在,将创建该文件夹)。可以修改文件名,但不能修改文件夹。该文件夹始终位于 VirtualAssets 项目中。 - 指定文件名称时,可以使用
%d
(当前日期)、%t
(当前时间)、%n
(代理名称)和%u
(基于时间的唯一 id)等变量。通配符可以一起使用,并与名称混合使用。例如,可以使用%nProxyTraffic%d
或%u_%d%nTraffic。
- 不要同时配置多个代理连接以对同一个通讯报文文件进行编写。这可能会损坏通讯报文文件。
- 默认情况下,通讯报文将录制在一个名为 %n_%d_%t.txt (<proxy_name>_<current_date>_<current_time>.txt) 的文件中。它将存储在
- 在录制会话区域,指定如何在通讯报文文件中录制通讯报文数据:
- 附加通讯报文数据将新的通讯报文数据添加至现有通讯报文文件中(在通讯报文文件字段中指定的文件)。如果指定文件早就不存在了,则将创建一个新的文件。更多详情,请参阅下面的More on Recording Session Options。
- 覆盖会话数据覆盖现有通讯报文文件中的通讯报文数据(在通讯报文文件字段中指定的文件)。如果指定文件早就不存在了,则将创建一个新的文件。更多详情,请参阅下面的More on Recording Session Options。
- 对应每个消息对的新会话文件(仅限于 HTTP 和内部的类型)为每个请求/响应对创建单独的通讯报文文件。更多详情,请参阅下面的More on Recording Session Options。
- 然后点击 OK。
Http 监听器选项卡
在 Http 监听器选项卡,可以配置 HTTP(S) 监听器监听的端口。HTTP 监听器简化了录制 HTTP 通讯报文的连接配置。共有两种类型:
反向代理
这种类型的监听器会启动一个端口来监听通讯报文,并可用于转发到实时服务或虚拟资产。当被测应用程序的配置选项允许用户配置用于连接后台服务的主机和端口时,最好使用这种方法。
添加 HTTP 监听器:
- 点击添加监听器,然后从类型下拉菜单中选择反向代理。
- 为监听器指定名称。
- 点击添加端口并输入端口号。通过指定
0
作为端口号,可以使消息代理自动分配端口。启用代理后,分配的端口号将出现在控制台中。每次更改/启用消息代理时,都会随机分配端口。您还可以向messageProxies
API 端点发送 GET 请求,以返回自动分配的端口号。更多信息,请参阅通过 REST API 进行测试。 - 如果客户端通过 SSL 发送通讯报文,则启用安全选项并启用验证选项。详情请参阅 HTTP 反向监听器端口的 SSL 设置。
- 点击 OK,退出端口编辑器。
- 点击添加向监听器添加其他端口,或再次点击 OK 以添加监听器。
正向代理
启动可根据“Host”头部路由通讯报文的 HTTP 代理。这十分适用于后端服务端点不可配置的移动应用程序,或者没有配置选项可用于更改连接后端服务的主机和端口的被测应用程序。
添加系统监听器:
- 点击添加监听器,然后从类型下拉菜单中选择转发代理。
- 为监听器指定名称。
- 输入端口号。
- 点击 OK,退出端口编辑器。
- 点击添加向监听器添加其他端口,或再次点击 OK 以添加监听器。
代理示例
决定使用反向代理还是正向代理,通常取决于您想记录的是应用程序通讯报文还是移动通讯报文。下面的示例说明了如何录制这两种通讯报文:
示例 1:如何录制应用程序通讯报文
- 创建新的消息代理。
- 在相应端口创建反向代理监听器。
- 为所有通讯报文创建 HTTP 反向代理连接。
- 启用录制。
- 指示 AUT 使用 Virtualize 服务器“主机”和反向代理监听器“端口”。
示例 2:如何录制移动通讯报文
- 创建新的消息代理。
- 在相应端口创建正向代理监听器
- 为所有通讯报文创建 HTTP 正向代理连接。
- 启用录制。
- 配置移动仿真器的代理设置,使用 Virtualize 服务器“主机”和正向代理监听器“端口”。
配置 HTTP 消息代理视频教程
本视频描述了如何设置一个消息代理来捕获实时通讯报文。
更多关于录制会话选项的信息
下表解释了如何使用不同的通讯报文文件名值组合和录制会话选项来录制通讯报文数据:
通讯报文文件名 | 录音选项 | 结果 |
---|---|---|
Default / parameterized | 添加新会话数据 | 创建一个新文件,其中包含录制会话中的所有请求/响应对。 |
Static | 添加新会话数据 | 将新的通讯报文数据添加到指定的通讯报文文件中(如果存在)。否则,创建一个新文件,其中包含录制会话中的所有请求/响应对。 |
Default / parameterized | 覆盖会话数据 | 创建一个新文件,其中包含录制会话中的所有请求/响应对。 |
Static | 覆盖会话数据 | 重写指定通讯报文文件中的现有通讯报文数据(如果存在)。否则,创建一个新文件,其中包含录制会话中的所有请求/响应对。 |
Default / parameterized | 对应每个消息对的新会话文件 | 在录制会话中为每个请求/响应对创建一个新文件。如果检测到多个请求/响应对,则创建多个文件。 |
Static | 对应每个消息对的新会话文件 | 如果指定的文件存在,则在每次检测到额外的请求/响应对时重写现有的通讯报文数据。 如果指定的文件不存在,则为第一个请求/响应对创建一个新文件,然后在每次检测到额外的请求/响应对时重写现有的通讯报文数据。 在这两种情况下,结果文件只包含最近的请求/响应对。 |
如果代理使用内部协议并在录制时接收 MQ 通讯报文,则不支持对应每个消息对的新会话文件选项。如果选择此选项,将默认使用覆盖会话数据行为。
跨服务器移动代理
可以将代理从一个服务器拖到另一个服务器进行移动。或者,可以从一台服务器复制并粘贴到另一台服务器。
代理可以使用全局配置或本地配置连接到 MQ 管理器。全局配置是为每个 Virtualize 服务器定义的,可由部署到服务器的虚拟资产和代理使用(请参阅连接选项)。本地配置是为单个代理或资产定义的。
如果目标 Virtualize 服务器上不存在 MQ 管理器连接配置,则无法部署连接到全局 MQ 管理器的代理或资产。如果需要将代理/资产移动或复制到另一个 Virtualize 服务器,可以手动定义 MQ 管理器连接,或使用复制功能将连接设置添加到目标服务器(请参阅复制 MQ 管理器连接)。
防止无限循环
如果您的代理和/或消息转发工具无意中设置了一个转发周期,如 A> B> C> A,这可能导致无限循环。 为防止此类循环,Virtualize 与 SOAtest 被配置为转发 10 次后停止转发。 您可以通过设置系统属性 parasoft.proxy.loop.max.limit
(例如,parasoft.proxy.loop.max.limit=5
)进行更改。
内建循环检测仅适用于内部路由转发(例如,路由到 localhost,而不是路由到主机名)。