消息重新排队并放入备份问题

时间:2012-12-17 15:51:23

标签: ibm-mq messagebroker backout

我在消息Broker 7.0.0.5中遇到了以下问题 这是我的流程:

flow

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

我可以看到在我的流程中抛出了两个错误,但最让我感到惊讶的是跟踪中的最后一行 - 从哪里开始#34; XMLNS"域名出现了吗? 我只使用XMLNSC域。

为什么邮件没有出现在Backout队列中?

提前谢谢!

塔蒂亚娜。

这里是跟踪:

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

2012-12-17 19:25:54.692302 5756 UserException ?????????? 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语句时检测到错误 ''''''''''''''''''''''' '''                                        消息代理在执行给定语句时检测到错误。抛出异常以缩短SQL程序。                                        有关错误的详细信息,请参阅以下消息。

2012-12-17 19:26:52.831020 5756 UserException ?????????? 3 ??????????? BIPmsgs.properties

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

2012-12-17 19:26:53.832435 5756 UserTrace BIP2638I:MQ输出节点' Esql6_1Flow.MQInput'试图将消息写入队列' SYSTEM.DEAD.LETTER.QUEUE''已连接到队列管理器' testQueueManagerName''。 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:收到消息并传播到' out' MQ输入节点的终端' .InputNode'。

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

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

2012-12-17 19:27:31.088092 4380 UserTrace BIP6069W:经纪人无法处理数据类型消息''''                                        消息代理收到一条消息,要求处理类型''''''''''''''''''&...                                        检查发送到消息代理的消息和节点的配置数据。如果要由代理处理消息,则必须删除对不支持的数据类型的引用。

2012-12-17 19:27:31.088113 4380 UserTrace BIP6061I:解析器类型 '' XMLS' 已创建代表节点' .InputNode'处理长度为236' 236'从offset' 364'开始的字节。根据前一个解析器中的值 ' XMLS' 选择的解析器类型。

1 个答案:

答案 0 :(得分: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 这将解决您的所有疑问。