0

我遇到了消息代理 7.0.0.5 的以下问题这是我的流程:

流动

我想要它做什么: 1. 接受 XML,解析,使用 XMLNSC 2. 然后我想要执行一些业务逻辑,但是让我们跳过它并关注以下内容 - 我想抛出两个用户异常 - 一个在模块中GoodReport,另一个 - 在模块 BadReport 中,因此,在 Out 和 Catch 流中处理后,我假设我的消息到达Backout Queue (我为我的队列创建了一个,并将阈值设置为 10)并被发送回MQInput 以便再次处理。所以我希望 Backout 队列中有 10 条消息,但相反 - 我什么也没得到

我可以看到在我的流程中抛出了两个错误,但最让我感到奇怪的是跟踪中的最后几行—— “XMLNS”域是从哪里出现的? 我只使用 XMLNSC 域。

为什么消息没有出现在 Backout 队列中?

先感谢您!

塔蒂亚娜。

这是跟踪:

2012-12-17 19:25:54.692283 5756 RecoverableException BIP2488E: ('.Esql6_1Flow_Report.Main', '19.4') 执行 SQL 语句“THROW EXCEPTION MESSAGE 3 VALUES ('NO_SUCH_SOURCE');''时检测到错误。消息代理在执行给定语句时检测到错误。已引发异常以缩短 SQL 程序。有关错误的详细信息,请参阅以下消息。

2012-12-17 19:25:54.692302 5756 用户异常 ?????????? 3 ?????????BIPmsgs.properties 2012-12-17 19:26:52.830982 5756 错误 BIP2628E:在输入节点“Esql6_1Flow.MQInput”上检测到异常情况。输入节点“Esql6_1Flow.MQInput”在处理消息时检测到错误。消息流已回滚,如果消息正在工作单元中处理,它将保留在输入队列中以再次处理。以下消息将指示此异常的原因。检查随后的错误消息以确定生成异常的原因,并按照这些消息的描述采取措施。

2012-12-17 19:26:52.831005 5756 RecoverableException BIP2230E:处理节点“Esql6_1Flow.BadReport”中的消息时检测到错误。消息代理在处理节点“Esql6_1Flow.BadReport”中的消息时检测到错误。已引发异常以缩短消息的处理时间。有关错误的详细信息,请参阅以下消息。

2012-12-17 19:26:52.831012 5756 RecoverableException BIP2488E: ('.Esql6_1Flow_Compute.Main', '13.4') 执行 SQL 语句''THROW EXCEPTION MESSAGE 3 VALUES ('NO_SUCH_SOURCE');''时检测到错误。消息代理在执行给定语句时检测到错误。已引发异常以缩短 SQL 程序。有关错误的详细信息,请参阅以下消息。

2012-12-17 19:26:52.831020 5756 用户异常 ?????????? 3 ?????????BIPmsgs.properties

2012-12-17 19:26:53.831737 5756 错误 BIP2648E:消息退回到队列;节点“Esql6_1Flow.MQInput”。节点“Esql6_1Flow.MQInput”收到一条消息,由于消息流的主路径中的处理错误,该消息先前已被撤销一次或多次。未连接故障终端,因此消息代理将消息直接放入与此节点关联的重新排队或死信回退队列。消息的 MQMD 'backoutCount' 现在等于为 WebSphere MQ 输入队列定义的 'backoutThreshold'。检查以前的消息和消息流以确定消息被回退的原因。如果可能,请纠正这种情况。

2012-12-17 19:26:53.832435 5756 UserTrace BIP2638I:MQ 输出节点“Esql6_1Flow.MQInput”试图将消息写入连接到队列管理器“testQueueManagerName”的队列“SYSTEM.DEAD.LETTER.QUEUE” . MQCC 为“0”,MQRC 为“0”。

2012-12-17 19:26:53.832466 5756 UserTrace BIP2615I:WebSphere MQ 输入节点“Esql6_1Flow.MQInput”已将消息回退到回退重新队列或死信队列。消息回退处理已被调用,并且消息已通过写入回退重新队列或死信队列来回退,这由 WebSphere MQ 队列管理器和队列配置确定。无需用户操作。

2012-12-17 19:27:31.087949 4380 UserTrace BIP2632I:消息接收并传播到 MQ 输入节点“.InputNode”的“输出”终端。

2012-12-17 19:27:31.088045 4380 UserTrace BIP6060I:代表节点“.InputNode”创建解析器类型“属性”,以处理从偏移量“0”开始的长度为 0 字节的传入消息的一部分。

2012-12-17 19:27:31.088066 4380 UserTrace BIP6061I:代表节点“.InputNode”创建解析器类型“MQMD”,以处理从偏移量“0”开始的长度为“364”字节的传入消息部分。根据来自先前解析器的值“MQHMD”选择的解析器类型。

2012-12-17 19:27:31.088092 4380 UserTrace BIP6069W:代理无法处理数据类型为“””的消息。消息代理收到一条需要处理“'”' 类型数据的消息,但该代理没有能力处理这种类型的数据。检查发送到消息代理的消息和节点的配置数据。如果消息要由代理处理,则必须删除对不受支持的数据类型的引用。

2012-12-17 19:27:31.088113 4380 UserTrace BIP6061I:代表节点“.InputNode ”创建解析器类型“XMLS ”,以处理从偏移量“364”开始的长度为“236”字节的传入消息部分。根据先前解析器中的值“XMLS”选择的解析器类型。

4

1 回答 1

0

BACKOUT 计数确定流应重试处理消息的次数。这里阈值设置为 10,这意味着流尝试处理 10 次,如果仍然失败,MQInput 节点会将消息放入回退队列或 DLQ,如果没有配置回退队列。Flow 只会将一条消息放入回退队列,而不是您预期的 10 条消息

如果消息以非事务模式处理,则流程不会将消息放入回退队列。检查您是否在 MQInput 节点中将 Transactional 属性配置为“NO”。如果配置的值为“自动”,则该消息应该是持久的,以便在事务下对其进行处理。但跟踪片段显示消息已放入 SYSTEM.DEAD.LETTER.QUEUE。您可能需要检查消息是否在 DLQ 中,并确认在输入节点中正确配置了回退队列属性。

阅读 http://publib.boulder.ibm.com/infocenter/wmbhelp/v7r0m0/topic/com.ibm.etools.mft.doc/ac00414_.htm 这将解决您的所有疑问。

于 2012-12-18T05:45:04.473 回答