章节目录:
概要
Asynchronous Socket Listener 支持基于套接字的客户端使用异步读写实现高并发。可以将其配置为从套接字读取定长、前缀可变长度或令牌分隔的消息。客户端连接一直处于开启状态,直到客户端断开连接或监听器出现错误为止。如果未收到匹配的响应,监听器会记录错误并关闭客户端连接。这是为了防止客户端等待监听器不会发送的请求响应。
安装
可以通过 UI 或命令行安装该工具。
UI 安装
- 选择 Parasoft > 首选项,然后点击系统属性分类。
- 点击添加 JARs 并选择 com.parasoft.virtualize.listener.asynchronous.socket-1.0.jar 文件。一旦此 jar 文件添加到 Virtualize classpath 中,将加载所有必需的依赖项。
- 重启 Virtualize。
命令行安装
将 com.parasoft.virtualize.listener.asynchronous.socket-1.0.jar 文件添加到设置属性文件中的 system.properties.classpath
属性。例如:
system.properties.classpath=<path to jar>/com.parasoft.virtualize.listener.asynchronous.socket-1.0.jar
classpath 更改完成后,将加载所有必需的依赖项。
使用说明
安装 Asynchronous Socket Listener 后,虚拟资产配置面板的传输协议>自定义选项卡中就会出现 Asynchronous Socket Listener。双击虚拟资产的 Virtualize 服务器节点以打开该面板。
如果有多个自定义监听器可用,则可以从选择实现下拉菜单选择要使用的自定义监听器。
配置
可以配置以下设置。
设置
Port | 指定套接字监听器监听传入连接的端口。指定 |
---|---|
Worker Threads | 指定用于处理信息的工作线程数。
默认为 |
Character Set | 指定用于解码和编码字节的字符集。 默认为 |
Connection Backlog | 指定在拒绝新连接之前允许积压的连接数。此配置为可选配置。建议将该字段留空。 |
Read Mode | 指定读取消息的监听模式。
默认为 |
Fixed Length
在 Fixed Length [default: 1024] 字段中指定固定消息的大小.
例如,如果消息的大小始终为 4 字节,客户端可能会发送以下请求
[0, 0, 0, 0]
例如,监听器会发回大小相同的响应,例如:
[1, 1, 1, 1]
来自客户端的每一条四字节消息都将被视为一条消息。
Token Delimited
Token Delimiter | 指定分隔消息的令牌。 默认为 |
---|---|
Token Type | 指定从令牌获取字节时使用的转换类型。
默认为 |
令牌分隔示例
如果指定了新行(\n)分隔符,那么当客户端发送多个请求时,监听器将单独处理每条消息,并针对每条消息发回响应。
hello world\n foo bar\n
good night world\n bar foo\n
即使所有消息都是在一次读取中接收的,监听器仍然会处理每个请求并在处理下一条消息之前发回响应。
前缀可变长度(数字)
本节中的设置仅适用于读取模式设置为 prefixed
的情况。
Length of the Length Field | 确定长度字段的长度。将读取所需的字节数并转换成数字,以确定消息的长度。可以指定以下值: 默认读取 4 个字节并将其转换为整数。 |
---|---|
Include Length Field Size in Length | 表示读取的长度是否也应包括长度字段的大小。 例如,如果启用该选项,4 字节的消息将发送长度值为 8。这是因为长度字段的默认长度为 4 字节,并会添加到消息体长度中。 默认为 |
Format of Static Prefix/Suffix | 指定用于将静态前缀/后缀转换为字节的转换类型。
默认为 |
Static Prefix | 指定可能需要添加到消息中的前缀段。指定后,消息格式将为 <PREFIX_BYTES><LENGTH_FIELD_BYTES><MESSAGE_DATA_BYTES>。 |
Static Suffix | 指定套接字可能需要的消息后缀段。指定后,消息格式将为 <LENGTH_FIELD_BYTES><MESSAGE_DATA_BYTES><SUFFIX_BYTES>。 |
前缀可变长度(数字)配置示例
如果客户端发送的请求包含 request1
,而 request1 的前缀使用 CP037
字符集的 int
,且长度包含前缀长度,那么请求将由以下字节表示:
[0, 0, 0, 12, 114, 101, 113, 117, 101, 115, 116, 49]
前四个字节([0, 0, 0, 12]
)是整数 12
,即整个消息的长度,包括前缀的前 4 个字节。其余字节是由配置的字符集编码的字符串 request1
。
前缀可变长度(字符串)
本节中的设置仅适用于读取模式设置为 prefixed-string
的情况。
String Prefix Length | 指定消息长度前缀的大小。要读取的字节数根据转换成字节的数字位数计算。监听器将 默认为 |
---|---|
Include Prefix in Length | 设置为 默认为 |
前缀可变长度(字符串)配置示例
如果客户端发送的请求前缀是一个包含 6 个字符的字符串,该字符串包含消息的总长度(以字节为单位),那么使用 CP037
字符集将产生以下字符串消息:
000014request1
字符串中的 000014
部分是长度前缀,14
是包括前缀在内的字符集编码的整个消息的总长度(以字节为单位)。如果长度中不包含前缀,那么客户端的请求将为以下字符串:
000008request1
字符串中的 000008
部分是由字符集编码的 request1 的长度。
SSL
将 SSL Enabled [ default:false ] 设置为 true
,以便通过 SSL 进行监听。
日志
指定 Log Level 字段。此设置为可选设置。
- 输入
1
仅记录错误 - 输入
2
记录错误和警告。 - 输入
3
记录错误、警告和信息。 - 输入
4
记录错误、警告、信息和排错。
默认为 3