[18.0.0.1 and later]

在 Liberty 中管理具有消息端点的消息

管理作为消息端点部署的消息驱动的 Bean (MDB) 的消息传递。

关于此任务

您可以使用服务器命令或 MBean 来管理到消息驱动的 Bean 的消息传递,这些消息驱动的 Bean 充当特定端点(即目标)上的侦听器。借助服务器命令或 MBean,您可以管理消息驱动的 Bean 所使用的企业信息系统 (EIS) 资源。

借助服务器命令和 MBean,您可以激活和取消激活应用程序中的特定端点,以确保消息仅传递到与正常 EIS 资源进行交互的侦听消息驱动的 Bean。此功能允许您在 EIS 资源行为与预期不符的情况下优化 JMS 应用程序的性能。当执行侦听的消息驱动的 Bean 对不正常的资源调用操作时,以端点为目标的消息传递通常将失败。例如,如果消息传递提供者(即,入站资源适配器)的底层消息驱动的 Bean 尝试对未响应的数据库服务器落实事务,那么此消息传递提供者可能无法将消息传递到端点。
提示: 请将消息驱动的 Bean 设计成委派其他企业 Bean 执行业务处理。不要直接在消息驱动的 Bean 中访问 EIS 资源,而是通过代表 Bean 间接进行此访问。
对于提供可访问资源的消息端点的应用程序,激活和取消激活消息端点的能力将缓解其所具有的两个问题:
  • 失败的消息需要进行额外处理,例如,再次将它们传递到侦听端点,或者将它们重定向到用于处理失败消息的备用目标。另外,资源适配器可能无限次地将消息重新传递到某个端点。
  • 消息重定向要求实现专用目标(队列和侦听器)以处理失败的消息,以及实现用于检测消息故障的逻辑。消息重定向的复杂性导致其可能容易引起错误,而且计算成本高昂。

取消激活(暂停)和重新激活(恢复)特定消息端点的能力使管理员能够取消激活端点,以使其停止处理注定失败的消息,从而缓解了这些问题。将消息端点取消激活后,您可以修复引起问题的资源,然后重新激活该端点以便继续处理消息请求。进行故障诊断会影响资源适配器或托管该端点的应用程序。

您还可以使用激活规范中的 autoStart 属性,使消息端点以取消激活状态开始。将此属性设置为 false 时,消息驱动的 Bean 不会在应用程序启动时开始接收消息。如果您知道在消息处理开始之前必须完成特定任务、必须启动服务或必须执行检查,可以使用此设置来自动取消激活消息端点。可以采用在操作期间暂停后重新激活消息端点的方式,激活消息端点。autoStart 属性的缺省值为 true

过程

结果

您在取消激活(暂停)消息端点时观察到的行为取决于各种因素,包括管理该消息端点的资源适配器、该消息端点的配置以及应用程序服务器拓扑。下面是一些有趣的具体示例:

侦听非持久主题的 MDB
取消激活(暂停)消息端点所暗指的行为通常依赖于该端点所实现的功能。例如,如果已将消息驱动的 Bean 配置为侦听非持久主题,那么取消激活该消息端点会导致关闭预订。消息驱动的 Bean 不会接收到任何在该消息端点暂停后发布的消息。
侦听持久主题的 MDB
如果已将消息驱动的 Bean 配置为侦听持久主题,那么取消激活该消息端点会导致关闭预订。根据配置,消息传递引擎可能会使该消息端点暂停后发布的所有消息保持不可使用,直到该消息端点恢复时才使用。
进行集群的 MDB
如果消息传递引擎支持集群,那么可能会使发往已暂停的消息端点的消息重定向到其他消息驱动的 Bean,这取决于配置。

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

文件名:twlp_msgendpoint.html