我的队列管理器有一个退出队列。
我想构建一个消息流,它将读取此队列,如果有任何消息进入队列,它应该接收消息并将其包装在特殊格式的XML中消息并将其放入正常的异常队列中,以获取处理的异常。
但是,进入回退队列的消息可以是任何格式,我必须创建一个xml,其中该消息将成为一个字段。
那么,我的流程的最佳设置(关于MQMD属性,如CCSID,格式等)以及我应该使用哪种解析器(DFDL或BLOB或MRM) )?
请提供建议。
答案 0 :(得分:0)
由于您不知道什么类型的消息到达退出队列,因此您不应该使用特定的解析器(如XMLNSC等)解析它。您可能会在MQInput上设置更通用的参数,您可以做得更好,以确定消息中的内容。
因此,我将从默认的消息域(BLOB)开始,并保持其他参数不受影响。将一些日志记录节点(例如Trace节点)连接到Catch和Failure终端。将Out终端连接到包含ESQL的Compute节点,以确定错误类型并决定进一步的操作(例如,路由到标签)。然后在每个标签中决定应将消息的哪个部分映射到最终异常消息和映射。
如果您需要在结果消息中当前处于回退队列中的消息的MQMD属性,只需提取值并将/ concatenate / whatever放到生成的消息XML部分中。我不认为您应该将MQMD(和其他)标头按原样复制到结果消息,因为这可能是原始消息进入退出队列的原因,并且您生成的消息将再次到达。从头开始构造生成的邮件头。
如果在进行这些转换时发生了不好的事情,您将在Trace中看到问题。然后适当修改错误处理逻辑,以避免将来处理不当。