本主题提供特定于处理属于 BLOB 域、由 BLOB 解析器解析的消息的信息。
您无法使用 BLOB 消息的内容,因为它没有预定义的结构。但您可以根据它在位流中的已知位置查阅其内容,并在对其内容了解最少的情况下处理该消息。
BLOB 消息体解析器与其他消息体解析器创建树结构的方式不同。它有一个根元素 BLOB。该根元素有一个包含数据的子元素,也称为 BLOB。
如果知道 BLOB 数据内特殊信息段的位置,可以使用子串来查阅消息内容。例如,以下表达式标识了消息体的第十个字节:
InputBody.BLOB.BLOB[10]
以下表达式引用了从偏移量 10 开始的 10 个字节消息数据:
SUBSTRING(InputBody.BLOB.BLOB from 10 for 10)
本示例显示了如何使用可变长度 BLOB 消息。该示例假设您已经配置了接收可变长度 BLOB 消息的消息流,通过调用 MRM 解析器解析其中一些字段,并根据已解析的信息将输出消息路由到正确的输出队列。
输入消息的格式为 BLOB,并假设为包含嵌入的 NULL(“x00”),因此它不能被定义为以 null 结束。
本示例显示完成下列操作所需的 ESQL:
通过这样做,您可以用后跟 BLOB 消息的整数长度字段定义消息模型。
本示例还显示如何将 BLOB 消息转换为 CWF、处理消息和剥除添加的长度字段。
在本示例中,输入记录具有如下格式:
此字段根据客户定义的条件将消息路由到不同队列的整数。
定义包含以下元素和类型的新消息 BLOB_Example:
此部分描述消息流的特性。如果您要实现此示例流,则必须完成消息流定义(例如,通过创建三个子流来替换此处使用的输出节点处理错误、未知和故障情况),并为其部署和执行提供任何必需的支持(例如,为流部署到的代理创建队列管理器上的入站和任何出站队列)。
该子流处理具有预期格式的消息(Filter 节点中执行的测试返回真)。成功消息将按其原始格式写至输出队列;消息从 MRM 转换回 BLOB,并除去添加的四个字节(B_LEN 字段)。
针对这个子流执行以下操作: