TCP Server 端口
Version 26.2.9636
Version 26.2.9636
TCP Server 端口
TCP Server 端口支持托管通用接口,通过 TCP 接收任意数据。
核心功能
- 通用 TCP/IP 服务器端点,支持 TLS/SSL 和明文传输,适用于任意数据流
- 可配置的消息分隔,支持使用静态分隔符或基于长度的解析
- 具备双向通信能力,支持基于连接 ID 的路由和连接事件消息
概述
每个 TCP Server 端口都会在指定的端口上监听传入的 TCP 流量,可以是 TLS/SSL 加密,也可以是纯文本。该端口适用于知行之桥需要接收不一定符合其它标准协议提供的约束的任意数据时的情况。
由于 TCP 流量是一个恒定的流,本质上没有“开始”或“结束”点,因此必须对端口进行配置,以确定一个消息的结束点和下一个消息的开始点。端口支持两种方法:
- 一个静态的字符串/字符分隔符,用于结束当前消息或开始下一个消息。
- 读取传入的 TCP 数据中的一个值,以确定信息的长度。
对于第二种方式,端口需要一个偏移量(从第一个字节后多少个字节开始读取消息长度)和一个大小(从偏移量开始读取长度值,要读取多少个字节)。如果消息的长度是消息的“头”中的第一个值,那么偏移量应该是 0。
一旦达到分隔符或长度,端口将向知行之桥工作流推送包含通过 TCP 接收的原始数据的消息。
TCP Server 端口还可以在客户端连接或断开连接时生成消息文件,以提醒工作流中的其它进程。更多信息可参见连接和断开消息部分。
有关向 TCP 客户端发送响应的信息,请参见发送消息部分。
端口配置
设置
配置
与端口关键配置有关的设置。
- 端口 Id 端口的静态、唯一标识符。
- 端口类型 显示端口类型及其用途的描述。
- 端口描述 一个可选字段,用于提供端口及其在流中的角色的自由格式描述。
- 端口 监听 TCP 连接的端口。
消息解码
与区分 TCP 流中的单个消息有关的设置。
- 消息起始分隔符 表示新消息开始的单个字符或十六进制值(以
0x为前缀)。 - 消息结束分隔符 表示当前消息结束的单个字符或十六进制值(以
0x为前缀)。 - 消息长度偏移 从接收的数据中开始读取信息长度之前要跳过的字节数。
- 消息长度大小 传入数据中长度值的大小(以字节为单位)。
TLS 设置
与TLS/SSL 传输安全相关的设置。
- 启用 TLS 客户端是否必须协商 TLS/SSL 加密才能连接到 TCP Server。
- 服务器证书 标识 TCP Server的 TLS/SSL 证书。
- 证书密码 访问服务器证书私钥的密码。
高级设置
保持活动
与服务器发送 keep-live 数据包以保持空闲连接有关的设置。
- Keep Alive 是否定期发送 keep-live 数据包,以确保空闲连接不会因不活跃而关闭。
- Keep Alive 时间 在发送第一个 keep-live 数据包之前的空闲时间长度。
- Keep Alive 间隔 连续的 keep-live 数据包之间的间隔。
高级设置
先前目录中未包含的设置。
- 连接消息 端口是否应该在客户端连接时生成知行之桥消息。更多信息请参考连接和断开消息部分。
- 断开消息 端口是否应该在客户端断开连接时生成知行之桥消息。更多信息请参见连接和断开消息部分。
- 空闲时间 服务器在因空闲而断开连接之前,等待空闲客户端的时间长度(毫秒)。
- 本地文件名格式 用于为端口输出的消息分配文件名的方案。 可以在文件名中动态使用宏来包含标识符和时间戳等信息。 有关详细信息,请参阅宏。
- 本机主机 本地服务器的绑定地址(如果不是默认网络接口)。
- 最大连接 并发端口的最大数量。
- TLS 启用协议 建立出站连接时支持的 TLS/SSL 协议列表。最佳实践是仅使用 TLS 协议。SSL v2 和 SSL v3 被认为存在安全隐患,仅在合作伙伴不支持更高版本时才应使用。请注意,TLS v1.3 尚未被普遍采用,如果目标服务器不支持该协议,连接可能会被拒绝。
消息
- 保存至 Sent 文件夹 选中此选项可将端口处理的文件复制到端口的已发送文件夹中。
- 已发送文件夹方案 指示端口根据选定的时间间隔对已发送文件夹中的消息进行分组。 例如,Weekly 选项指示端口每周创建一个新的子文件夹,并将该周的所有消息存储在该文件夹中。 空白设置告诉端口将所有消息直接保存在“已发送”文件夹中。 对于处理许多消息的端口,使用子文件夹有助于保持消息的组织性并提高性能。
日志
- 日志级别 端口生成的日志的详细程度。 当端口请求支持时,请将其设置为 Debug。
- 日志子文件夹方案:指示端口根据所选的时间间隔对日志(Logs)文件夹中的文件进行分组。每周(Weekly)选项(默认设置)指示端口每周创建一个新子文件夹,并将该周的所有日志存储在其中。如果此设置留空,则端口将所有日志直接保存在日志文件夹中。对于处理大量事务的端口,使用子文件夹有助于保持日志井然有序并提高性能。
- 保留消息副本 选中此项可使已处理文件的日志条目包含文件本身的副本。 如果禁用此功能,端口可能无法从 交易 选项卡下载文件的副本。
特殊设置
特殊设置 适用于特定用例。
- 其他设置 允许在以分号分隔的列表中配置隐藏的端口设置,例如
setting1=value1;setting2=value2。 正常的端口用例和功能不需要使用这些设置。
自动化
自动化
与端口自动处理文件相关的设置。
- 发送 是否自动处理到达端口的消息。
性能
与端口资源分配相关的设置。
- 最大工作线程数 此端口上处理文件时从线程池中消耗的最大工作线程数。如果设置,则会覆盖 高级设置 页面的 性能设置 部分的默认设置。
- 最大文件数 分配给端口的每个线程发送的最大文件数。如果设置,则会覆盖 高级设置 页面的 性能设置 部分的默认设置。
通知选项卡
与配置通知相关的设置。
在执行服务级别协议 (SLA) 之前,需要设置电子邮件通知以接收通知。默认情况下,知行之桥使用 通知 选项卡上的全局设置。要为此端口使用其他设置,请启用覆盖全局设置。
默认情况下,错误通知处于启用状态,这意味着每当出现错误时都会发送电子邮件。要关闭错误通知,请取消选中启用复选框。
输入主题(必填),然后(可选)输入以逗号分隔的收件人电子邮件列表。
SLA 选项卡
与配置服务级别协议 (SLA) 相关的设置。
SLA 允许配置预期流程中端口发送或接收的数据量,并设置预期达到该数据量的时间范围。当 SLA 未达到时,知行之桥会发送电子邮件警告用户,并将 SLA 标记为_存在风险_,这意味着如果 SLA 未能尽快达到,则会被标记为_已违反_。这让用户有机会介入并确定 SLA 未达到的原因,并采取适当的措施。如果在风险时间段结束时仍未达到 SLA,则会将 SLA 标记为_已违反_,并再次通知用户。
要定义 SLA,请启用预期数据量,然后点击设置选项卡。

- 如果端口具有单独的发送和接收操作,请使用单选按钮指定 SLA 适用的方向。
- 在窗口的预计至少部分中:
- 设置预计处理的最小事务数量(交易量)
- 使用每个字段指定时间范围
- 指示 SLA 生效的时间。如果选择开始于,请填写日期和时间字段。
- 勾选希望 SLA 生效的星期几对应的复选框。如有必要,请使用下拉菜单选择每天。
- 在窗口的将状态设置为“有风险”部分中,指定应将 SLA 标记为有风险的时间。
- 默认情况下,只有在违反 SLA 的情况下才会发送通知。要更改此设置,请勾选发送“有风险”通知。
以下示例显示了为端口配置的 SLA,该端口预计在周一至周五每天接收 1000 个文件。如果尚未收到 1000 个文件,则会在时间段结束前 1 小时发送风险通知。

注意:如果有必要,可以关闭 SLA 通知。这在维护窗口期间非常有用。点击导航栏上的设置,然后跳转到通知 > 通用通知。点击平板和铅笔图标进行编辑,并取消勾选 SLA 通知设置。
服务器
受信任的 IP 地址
此选项卡上的 可信 IP 地址 部分提供以下功能:
- 添加 输入新的 IP 地址范围。
- 编辑 修改选定的 IP 地址范围。
- 删除 从列表中删除选定的 IP 地址范围。
以下限制适用于此功能:
localhost不能被修改或从列表中删除。- 任何超出定义范围的 IP 地址都将被拒绝。
- 支持IP范围。 例如,“100.10.100.1-15”条目表示允许100.10.100.1至100.10.100.15之间的IP地址访问。
- 支持 无类别域间路由(CIDR) 表示法。 例如,“100.10.100.0/24”条目表示允许100.10.100.0至100.10.100.255之间的IP地址访问。
- 支持通配符模式。 例如,条目
100.10.100.*表示允许以100.10.100开头的 IP 地址。 任何超出该范围的 IP 地址都将被拒绝。
注意:为了让客户端能够访问服务器,需要有清晰的网络路径。在云环境中,可能需要在三个地方进行更改:
- 云控制台中的网络规则。
- 托管应用程序的机器上的防火墙规则。例如,在使用 Amazon AMI 时,可以使用 简单防火墙 (UFW) 来允许所需端口上的流量。Linux 环境中的常见策略是将流量从低于 1024 的端口转发到高于 1024 的非标准端口,同时将应用程序配置为使用非标准端口。这可以避免与非 root 用户绑定到低于 1024 的端口相关的权限问题。
- 安全选项卡的网络访问部分。
连接和断开消息
默认情况下,TCP Server 端口仅在客户端传输数据时生成知行之桥消息,以便端口识别完整的消息(根据消息解码部分的设置)。当客户端连接到服务器(如果在“高级”选项卡中启用了连接消息)或断开与服务器的连接(如果在“高级”选项卡中启用了断开消息)时,端口也可以生成知行之桥消息。
当这些特殊消息生成后,知行之桥消息中会添加一个特殊的头部。
x-tcpserver-event
客户端连接时,此头部设置为值 “connected”,而客户端断开连接时,此头部设置为 “disconnected”。
该头部必须由工作流中之后的端口检查,以检测写入 TCP Server 端口输出文件夹的消息是否属于这些特殊消息。
发送消息
TCP Server 端口还使用一个特殊的头部值来向连接的客户端发送消息。
x-tcpserver-connectionid
该头部被添加到端口生成的任何输出消息中,设置为 “Connection ID” 值,以唯一标识所连接的客户端之一。为了确保消息被发送到正确的客户端,被发送回此客户端的消息 必须 将此相同的头部设置为相同的值。
由于该头部已经存在于端口写出的任何消息中,因此如果消息通过知行之桥工作流并返回 TCP Server 端口的交易选项卡,它仍将具有相同的 “Connection ID” 值,并将返回给发送原始消息的同一个客户端。如果消息不能直接路由回 TCP Server 端口,那么必须保存 “Connection ID” 值,并将其作为一个头部(与上面列出的名称相同)应用到任何返回给客户端的新消息中。
宏
在文件命名策略中使用宏可以提高组织效率和对数据的上下文理解。 通过将宏合并到文件名中,可以动态地包含相关信息,例如标识符、时间戳和消息头信息,从而为每个文件提供有价值的上下文。 这有助于确保文件名反映对组织重要的详细信息。
知行之桥 支持这些宏,它们都使用以下语法:%Macro%。
| 宏 | 描述 |
|---|---|
| ConnectorID | 替换为端口的 ConnectorID。 |
| Ext | 替换为端口当前正在处理的文件的文件扩展名。 |
| Filename | 替换为端口当前正在处理的文件的文件名(包括扩展名)。 |
| FilenameNoExt | 替换为端口当前正在处理的文件的文件名(不带扩展名)。 |
| MessageId | 计算端口输出的消息的 MessageId。 |
| RegexFilename:pattern | 将正则表达式模式应用于端口当前正在处理的文件的文件名。 |
| Header:headername | 替换为端口正在处理的当前消息的目标消息头 (headername) 的值。 |
| LongDate | 以常规格式计算系统的当前日期时间(例如,2024 年 1 月 24 日星期三)。 |
| ShortDate | 以 yyyy-MM-dd 格式计算系统的当前日期时间(例如 2024-01-24)。 |
| DateFormat:format | 以指定格式(format)计算系统的当前日期时间。 有关可用的日期时间格式,请参阅示例日期格式 |
| Vault:vaultitem | 计算指定保管库项目的值。 |
| ConnectionId | 替换为客户端用于上传数据的连接的 ConnectionId。 |
| RemoteHost | 替换为客户端用于上传数据的连接的 ConnectionId。 |
示例
某些宏(例如 %Ext% 和 %ShortDate%)不需要参数,但其他宏则需要。 所有带有参数的宏都使用以下语法:%Macro:argument%
以下是带有参数的宏的一些示例:
- %Header:headername%:其中
headername是消息上消息头的名称。 - %Header:mycustomheader% 解析为输入消息上设置的
mycustomheader消息头的值。 - %Header:ponum% 解析为输入消息上设置的
ponum消息头的值。 - %RegexFilename:pattern%:其中“pattern”是正则表达式模式。 例如,
%RegexFilename:^([\w][A-Za-z]+)%匹配并解析为文件名中的第一个单词,并且不区分大小写(test_file.xml解析为test) 。 - %Vault:vaultitem%:其中
vaultitem是 vault 中项目的名称。 例如,%Vault:companyname%解析为存储在保管库中的companyname项的值。 - %DateFormat:format%:其中
format是可接受的日期格式(有关详细信息,请参阅示例日期格式)。 例如,%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%解析为文件上的日期和时间戳。
还可以创建更复杂的宏,如以下示例所示:
- 将多个宏组合在一个文件名中:
%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%%EXT% - 包括宏之外的文本:
MyFile_%DateFormat:yyyy-MM-dd-HH-mm-ss-fff% - 在宏中包含文本:
%DateFormat:'DateProcessed-'yyyy-MM-dd_'TimeProcessed-'HH-mm-ss%