示例 2:系统资源不可用时自动停止 MDB

要为系统资源不可用的情况做好准备,请将系统配置为少量消息失败后即自动停止消息驱动的 Bean (MDB) 并向您报告该问题。

开始之前

此任务假定您已部署包含与外部系统资源交互的消息驱动的 Bean (MDB) 的企业应用程序。

MDB 侦听的目标必须是异常目标。此异常目标可以是系统缺省值,也可是专门为该目标配置的值。

要完成此任务,您需要以下信息:
  • 包含 MDB 的企业应用程序。
  • 相关外部系统资源。
  • 连续失败消息阈值的值为 3。这是最大消息传送连续失败数,在此之后 MDB 会停止。此属性适用于消息集。
  • 失败消息重试之间的延迟的值设置为 5000,即,可将失败消息传送至 MDB 之前的时间(以毫秒计)。除非连续失败消息阈值和最大并行度设置为 1,否则在此时间段内可能会传送其他消息。
  • 每个消息的最大失败传递次数的值为 5,即,尝试处理消息的最大失败次数,在此之后消息将从其期望目标转发至异常目标。此属性适用于个别消息。

关于此任务

在此方案中,企业应用程序或业务级应用程序是持续运行的系统,此系统使用已部署 MDB 来访问外部系统资源。

如果外部资源遇到问题并且变为不可用,那么所部署 MDB 无法访问该资源,所以与该 MDB 相关联的事务会回滚,并且消息 msg1 被放回到队列上。

消息 msg1 会隐藏 5 秒(重试延迟,在失败消息重试之间的延迟中设置),然后可供 MDB 使用。

同时,MDB 会处理队列上的下一个消息(即 msg2)。外部资源仍然不可用,所以此消息的处理也会失败。该消息事务回滚并隐藏 5 秒。队列上的下一条消息(即 msg3)的处理失败并且也会隐藏。

隐藏的消息数达到连续失败消息阈值时,MDB 将不会处理其他任何消息,直到其中一个隐藏消息重新变为可用。

msg1 的失败消息重试之间的延迟到期时,会显示 msg1 并对其进行重新处理。因为资源仍然不可用,所以消息再次隐藏。对于 msg2 和 msg3,情况也是如此。

消息回滚的次数比每个消息的最大失败传递次数限制(在此方案中为 5 次)少 1 时,消息会被视为失败消息。所以,msg1 第 4 次显示,回滚并再次隐藏后,连续失败计数会递增。此时 msg2 会出现,回滚并再次隐藏。同样,msg3 会出现,回滚并再次隐藏。连续失败计数达到连续失败消息阈值并且 MDB 自动停止。JCA MBean 会发出 JMX 通知,并且日志条目会向系统管理员发出 MDB 已停止的警报。

注: 在此方案中,系统资源不可用的时间达到大约 20 秒后,MDB 会自动停止。如果系统资源有一小段时间不可用,并且连续失败计数达不到连续失败消息阈值,那么某次重试后消息会成功得到处理。实际上,系统通常会在没有手动干预的情况下继续运行,并且不向异常目标发送任何消息。

过程

  1. 浏览至包含 MDB 的已部署企业应用程序。
  2. 在 MDB 中,浏览至其 JMS 激活规范。单击资源 -> JMS -> 激活规范 -> activation_specification_name
  3. 连续失败消息阈值输入值 3
  4. 失败消息重试之间的延迟输入值 5000
  5. 保存配置。
  6. 浏览至 MDB 正在侦听的目标。根据需要单击下列其中一条路径:
    • 服务集成 -> 总线 -> bus_name -> [目标资源] 目标 -> queue_name
    • 服务集成 -> 总线 -> bus_name -> [目标资源] 目标 -> topic_space_name
  7. 每个消息的最大失败传递次数输入值 5
  8. 将更改保存至主配置。
  9. 接收到 JMX 通知及指示 MDB(或端点)已暂停的日志条目时,调查 MDB 所使用的系统资源的问题。 在 MDB 暂停期间,不会有任何消息发送到异常目标,并且与停止的数据库相关的控制台中不会显示任何错误消息。
  10. 失效的系统资源可用时,重新启动此资源。
  11. 再次登录管理控制台,浏览至同一企业级应用程序并在 MDB 的管理面板上单击恢复。还可通过使用 JCA MBean 或脚本编制来恢复 MDB。初始 JMX 通知和日志条目指示用于恢复 MDB 的 MBean。 MDB 开始通过目标上的消息进行驱动。

结果

您已配置系统以使其避免外部资源发生故障。

下一步做什么

MDB 恢复时,JCA MBean 会发出 JMX 通知以指示 MDB 已恢复。会使用队列上的消息,重试已失败的消息,并且会落实事务。

指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjn_mdb_0001_Ex2
文件名:tjn_mdb_0001_Ex2.html