跳到主要内容
版本:7.0.3

支持JCA消息端点

Hunyuan 7b 中英对照 Support for JCA Message Endpoints

从版本2.5开始,Spring还提供了对基于JCA的MessageListener容器的支持。JmsMessageEndpointManager会尝试从提供者的ResourceAdapter类名中自动确定ActivationSpec类名。因此,通常可以提供Spring的通用JmsActivationSpecConfig,如下例所示:

@Bean
public JmsMessageEndpointManager jmsMessageEndpointManager(ResourceAdapter resourceAdapter,
MessageListener myMessageListener) {

JmsActivationSpecConfig specConfig = new JmsActivationSpecConfig();
specConfig.setDestinationName("myQueue");

JmsMessageEndpointManager endpointManager = new JmsMessageEndpointManager();
endpointManager.setResourceAdapter(resourceAdapter);
endpointManager.setActivationSpecConfig(specConfig);
endpointManager.setMessageListener(myMessageListener);
return endpointManager;
}

或者,您可以使用给定的ActivationSpec对象来设置一个JmsMessageEndpointManagerActivationSpec对象也可以通过JNDI查找(使用<jee:jndi-lookup>)获得。以下示例展示了如何进行操作:

@Bean
JmsMessageEndpointManager jmsMessageEndpointManager(ResourceAdapter resourceAdapter,
MessageListener myMessageListener) {

ActiveMQActivationSpec spec = new ActiveMQActivationSpec();
spec.setDestination("myQueue");
spec.setDestinationType("jakarta.jms.Queue");

JmsMessageEndpointManager endpointManager = new JmsMessageEndpointManager();
endpointManager.setResourceAdapter(resourceAdapter);
endpointManager.setActivationSpec(spec);
endpointManager.setMessageListener(myMessageListener);
return endpointManager;
}

有关更多详细信息,请参阅JmsMessageEndpointManagerJmsActivationSpecConfigResourceAdapterFactoryBean的Javadoc。

Spring还提供了一个通用的JCA消息端点管理器,该管理器不依赖于JMS:org.springframework.jca.endpoint.GenericMessageEndpointManager。该组件允许使用任何类型的消息监听器(例如JMS的MessageListener)以及任何特定提供者的ActivationSpec对象。请参阅您的JCA提供者的文档,以了解连接器的实际功能;关于Spring特有的配置细节,请参阅GenericMessageEndpointManager的Javadoc。

备注

基于JCA的消息端点管理与EJB 2.1的Message-Driven Beans非常相似。它们使用相同的底层资源提供者契约。与EJB 2.1的MDB一样,你也可以在Spring上下文中使用JCA提供者支持的任何消息监听器接口。不过,Spring还为JMS提供了显式的“便利”支持,因为JMS是与JCA端点管理契约一起使用的最常见的端点API。