如何在IIB中向归档队列发送含MQRFH2.usr提供者名的归档消息
IIB 归档消息添加MQRFH2.usr提供者名称实现方案
实现步骤
调整消息流分支结构
在已有的3个「发送至提供者」分支中,分别在提供者MQ输出节点之前添加一个Compute节点,用于注入带提供者名称的MQRFH2头;同时在每个Compute节点后新增一个MQ输出节点,指向你的归档队列。配置Compute节点逻辑
每个Compute节点对应一个特定提供者,在ESQL中完成MQRFH2头的创建/修改,并写入对应的提供者名称,同时保留映射后的消息体。配置归档MQ输出节点
将归档队列对应的MQ输出节点的Message Domain设置为Automatic,确保MQRFH2头能被正确识别并传递到归档队列中。
ESQL代码示例(以ProviderA分支为例)
CREATE COMPUTE MODULE Inject_ProviderName_RFH2 CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN -- 定位或创建MQRFH2头部 DECLARE rfh2Ref REFERENCE TO OutputRoot.MQRFH2; IF rfh2Ref IS NULL THEN -- 初始化MQRFH2基础结构 SET OutputRoot.MQRFH2 = ROW{ Version: 2, Namespace: 'http://ibm.com/wmq/msg/2001/03', usr: ROW{} }; SET rfh2Ref = OutputRoot.MQRFH2; END IF; -- 写入当前分支对应的提供者名称 SET rfh2Ref.usr.ProviderName = 'ProviderA'; -- 保留映射后的提供者格式消息体(根据实际消息域调整,比如XMLNSC、JSON等) SET OutputRoot.BLOB = InputRoot.BLOB; -- 如果是XML域,替换为:SET OutputRoot.XMLNSC = InputRoot.XMLNSC; RETURN TRUE; END; END MODULE;
批量适配其他提供者
对于ProviderB和ProviderC分支,只需复制上述ESQL代码,将SET rfh2Ref.usr.ProviderName = 'ProviderA';中的ProviderA替换为ProviderB/ProviderC即可。
关键注意事项
- 若消息使用特定业务域(如XMLNSC、JSON),需将代码中消息体复制的语句替换为对应域的路径,避免消息体丢失或格式错误。
- 确保归档队列的MQ输出节点未启用「Strip Headers」选项,否则MQRFH2头会被剥离。
内容的提问来源于stack exchange,提问作者up's
相关产品推荐
相关产品推荐

