【问题标题】:Best way to handle backed out message in WMB在 WMB 中处理回退消息的最佳方法
【发布时间】:2012-12-22 18:20:48
【问题描述】:
我的队列管理器有一个回退队列。
我想构建一个消息流,它将读取此队列,如果有任何消息进入队列,它应该接收该消息并将其包装在特殊格式的 XML 中消息并将其放入获取处理异常的正常异常队列中。
但是,进入回退队列的消息可以是任何格式,我必须创建一个 xml,该消息将成为一个字段。
那么,对于我的流程来说,最佳设置可能是什么(关于 CCSID、格式等 MQMD 属性)以及我应该使用哪个 解析器(DFDL 或 BLOB 或 MRM )?
请多多指教。
【问题讨论】:
标签:
parsing
websphere
ibm-mq
websphere-8
【解决方案1】:
由于您不知道什么样的消息到达回退队列,您不应该使用特定的解析器(如 XMLNSC 等)来解析它。您在 MQInput 上设置的通用参数可能越多,您就越能在流程中进一步确定消息中的内容。
因此,我将从默认消息域 (BLOB) 开始,而其他参数也保持不变。将一些日志记录节点(例如 Trace 节点)连接到 Catch 和 Failure 终端。将 Out 终端连接到包含 ESQL 的计算节点以确定错误类型并决定进一步的操作(例如路由到标签)。然后在每个标签中决定应该将消息的哪一部分映射到最终异常消息并映射到映射。
如果您需要结果消息中当前位于回退队列中的消息的那些 MQMD 属性,只需提取值并将/连接/任何内容放入结果消息 XML 部分。我认为您不应该将 MQMD(和其他)标头原样复制到结果消息,因为这些可能是原始消息进入回退队列并且您的结果消息将再次到达那里的原因。从头开始构造生成的消息头。
如果在执行这些转换时发生了不好的事情,您将在 Trace 中看到问题。然后适当修改错误处理逻辑,避免以后出现错误处理。