示例 3:系统遇到带有问题消息的问题
要为问题消息做好准备,请配置系统以将该消息移至异常目标并允许成功处理其他消息。
开始之前
MDB 侦听的目标必须是异常目标。此异常目标可以是系统缺省值,也可以是专门为该目标配置的值。
要完成此任务,您需要以下信息:
- 包含 MDB 的企业应用程序。
- 相关外部系统资源。
- 将连续失败消息阈值的值设置为 3。这是最大消息传送连续失败数,在此之后 MDB 会停止。此属性适用于消息集。
- 将失败消息重试之间的延迟的值设置为 5000,即,可将失败消息传送至 MDB 之前的时间(以毫秒计)。除非连续失败消息阈值和最大并行度设置为 1,否则在此时间段内可能会传送其他消息。
- 将每个消息的最大失败传递次数的值设置为 5,即,尝试处理消息的最大失败次数,在此之后消息将从其期望目标转发至异常目标。此属性适用于个别消息。
关于此任务
在此方案中,企业应用程序是持续运行的系统,此系统使用已部署 MDB 来访问外部系统资源。
遇到问题消息(在此方案中为 msg1)时,会将它放回到队列上。
msg1 将在失败消息重试之间的延迟重试延迟期间(5 秒)隐藏,而不是立即对 MDB 可用。
MDB 处理队列上的下一条消息 (msg2)。此消息及后续消息会成功。
msg1 的失败消息重试之间的延迟到期时,将取消隐藏 msg1 并对其进行重新处理。再次将它放回到队列上。
MDB 继续正常处理后续消息,但每次处理 msg1 时会将它放回到队列上。
当 msg1 的隐藏、回滚和再次隐藏次数达到每个消息的最大失败传递次数限制(在此方案中为 5 次)后,会将它移至已配置的异常目标。