|
此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Framework 6.2.7! |
支持 JCA 消息端点
从版本 2.5 开始, Spring 还提供了对基于 JCA 的MessageListener容器。这JmsMessageEndpointManager尝试
自动确定ActivationSpecclass name 来自提供程序的ResourceAdapter类名。因此,通常可以提供
Spring 的泛型JmsActivationSpecConfig,如下例所示:
<bean class="org.springframework.jms.listener.endpoint.JmsMessageEndpointManager">
<property name="resourceAdapter" ref="resourceAdapter"/>
<property name="activationSpecConfig">
<bean class="org.springframework.jms.listener.endpoint.JmsActivationSpecConfig">
<property name="destinationName" value="myQueue"/>
</bean>
</property>
<property name="messageListener" ref="myMessageListener"/>
</bean>
或者,您可以设置JmsMessageEndpointManager使用给定的ActivationSpec对象。这ActivationSpecobject 也可能来自 JNDI 查找
(使用<jee:jndi-lookup>).以下示例显示了如何执行此作:
<bean class="org.springframework.jms.listener.endpoint.JmsMessageEndpointManager">
<property name="resourceAdapter" ref="resourceAdapter"/>
<property name="activationSpec">
<bean class="org.apache.activemq.ra.ActiveMQActivationSpec">
<property name="destination" value="myQueue"/>
<property name="destinationType" value="jakarta.jms.Queue"/>
</bean>
</property>
<property name="messageListener" ref="myMessageListener"/>
</bean>
使用 Spring 的ResourceAdapterFactoryBean中,您可以配置目标ResourceAdapter本地,如下例所示:
<bean id="resourceAdapter" class="org.springframework.jca.support.ResourceAdapterFactoryBean">
<property name="resourceAdapter">
<bean class="org.apache.activemq.ra.ActiveMQResourceAdapter">
<property name="serverUrl" value="tcp://localhost:61616"/>
</bean>
</property>
<property name="workManager">
<bean class="org.springframework.jca.work.SimpleTaskWorkManager"/>
</property>
</bean>
指定的WorkManager也可以指向特定于环境的线程池 — 通常通过SimpleTaskWorkManager实例的asyncTaskExecutor财产。
考虑为所有ResourceAdapter实例
如果您碰巧使用多个适配器。
在某些环境中,您可以改为获取整个ResourceAdapter来自 JNDI 的对象
(通过使用<jee:jndi-lookup>).然后,基于 Spring 的消息侦听器可以与
服务器托管的ResourceAdapter,它也使用服务器的内置WorkManager.
请参阅 javadoc 以获取JmsMessageEndpointManager,JmsActivationSpecConfig,
和ResourceAdapterFactoryBean了解更多详情。
Spring 还提供了一个不绑定到 JMS 的通用 JCA 消息端点管理器:org.springframework.jca.endpoint.GenericMessageEndpointManager.此组件允许
使用任何消息侦听器类型(例如 JMSMessageListener) 和任何
特定于提供商ActivationSpec对象。请参阅 JCA 提供商的文档,以便
了解连接器的实际功能,并查看GenericMessageEndpointManagerjavadoc 获取特定于 Spring 的配置详细信息。
| 基于 JCA 的消息端点管理与 EJB 2.1 消息驱动的 Bean 非常相似。 它使用相同的基础资源提供程序协定。与 EJB 2.1 MDB 一样,您可以使用任何 消息侦听器接口,您的 JCA 提供程序在 Spring 上下文中也支持。 尽管如此,Spring 还是为 JMS 提供了明确的 “便利” 支持,因为 JMS 是 与 JCA Endpoint Management 合同一起使用的最常见端点 API。 |