![[z/OS]](../images/ngzos.gif)
ASF 消息驱动的 bean 的消息传递流(将 WebSphere MQ 作为消息传递提供程序)
应用程序服务器设施 (ASF) 用于将可选 ASF 扩展包含在 JMS 规范中的消息传递提供程序。在 z/OS® 上,这些扩展由 WebSphere MQ 消息传递提供程序实现。从 WebSphere® Application Server V7.0 开始,首选使用 JCA,而不是较旧的 ASF 技术。
WebSphere Application Server 中消息驱动的 bean 的 ASF 支持称为消息侦听器服务。当您安装 ASF 消息驱动的 bean 应用程序时,提供配置信息作为消息侦听器端口。
图 1. WebSphere MQ 连接 - 消息侦听器服务 (ASF)

在 z/OS 上,ASF 用于两种不同消息传递流模式。
在控制器中侦听
下图显示了消息侦听器在控制器中侦听时,WebSphere MQ ASF 消息传递流
在 z/OS WebSphere Application Server 中,ASF 支持消息驱动的处理,在此处理期间,消息驱动 bean 侦听器位于 CR 中,且工作分发到 SR 中的消息驱动的 bean 分派器。请注意,对于发布/预订,存在一个为整个服务器注册一个预订的侦听器,而不是为每个 SR 注册单独的预订。
图 2. WebSphere MQ ASF - 在控制器中侦听

处理如下所示:
- 当消息到达 JMS 目标时(在图中显示为 WebSphere MQ 队列),侦听器会接收消息的副本。该侦听器不会从目标删除消息。
- 侦听器确定消息的事务类,并使用 z/OS 工作负载管理 (WLM),以将消息令牌(不是实际消息)传递到 SR。工作负载管理基于事务类选择合适的 SR。
- 分派器使用消息令牌来接收消息,并将其传递到消息驱动的 bean 的 onMessage 方法。该分派器会从目标删除消息。
在服务方中侦听
下图显示了消息侦听器在服务方区域中侦听时,WebSphere MQ ASF 消息传递流。
此图显示了特殊形式的 ASF 消息驱动的 bean 处理,在此处理中,消息驱动的 bean 侦听器和消息驱动的 bean 分派器在同一 SR 中运行。WebSphere Application Server 为非持久发布/预订消息传递使用此配置。每个 SR 注册其自己的预订,这样一个服务器可能会接收和处理相同发布的多个副本(即,针对每个 SR,接收和处理一个相同发布的副本)。
图 3. WebSphere MQ ASF - 在服务方中侦听

处理如下所示:
- 当消息到达目标时(在图中显示为 WebSphere MQ 队列),侦听器会接收消息的副本。该侦听器不会从目标删除消息。
- 侦听器调用CR 中的代码,该CR使用 z/OS WLM 将消息令牌传递回相同 SR。
- 分派器使用消息令牌来接收消息,并将其传递到消息驱动的 bean 的 onMessage 方法。该分派器会从目标删除消息。