|
对于最新稳定版本,请使用 Spring Framework 7.0.6! |
JMS Namespace Support
Spring 提供了用于简化 JMS 配置的 XML 命名空间。要使用 JMS 命名空间元素,您需要引用 JMS 架构,如下例所示:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jms="http://www.springframework.org/schema/jms" (1)
xsi:schemaLocation="
http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/jms
https://www.springframework.org/schema/jms/spring-jms.xsd">
<!-- bean definitions here -->
</beans>
| 1 | 引用JMS模式。 |
该命名空间由三个顶层元素组成:<annotation-driven/>、<listener-container/>
和<jca-listener-container/>。<annotation-driven/> 支持使用 基于注解的监听器端点
。<listener-container/> 和<jca-listener-container/>
定义共享的监听器容器配置,并可包含<listener/>子元素。
以下示例展示了两个监听器的基本配置:
<jms:listener-container>
<jms:listener destination="queue.orders" ref="orderService" method="placeOrder"/>
<jms:listener destination="queue.confirmations" ref="confirmationLogger" method="log"/>
</jms:listener-container>
前面的示例等同于创建两个不同的监听器容器 Bean 定义和两个不同的 MessageListenerAdapter Bean 定义,如 使用 MessageListenerAdapter 所示。除了前面示例中显示的属性外,listener 元素还可以包含多个可选属性。下表描述了所有可用的属性:
| 属性 | <description> </description> |
|---|---|
|
用于托管监听器容器的 Bean 名称。如果未指定,将自动生成一个 Bean 名称。 |
|
此监听器的目标名称,通过 |
|
处理器对象的 Bean 名称。 |
|
要调用的处理方法的名称。如果 |
|
用于发送响应消息的默认响应目标名称。当请求消息未包含 |
|
持久订阅的名称(如果有的话)。 |
|
此监听器的可选消息选择器。 |
|
为此监听器启动的并发会话数或消费者数量。该值可以是一个简单数字,表示最大数量(例如, |
<listener-container/> 元素还接受多个可选属性。这允许您自定义各种策略(例如 taskExecutor 和 destinationResolver),以及基本的 JMS 设置和资源引用。通过使用这些属性,您可以在仍然享受命名空间便利性的同时,定义高度定制化的监听器容器。
你可以通过指定 JmsListenerContainerFactory 属性来暴露 bean 的 id,从而自动将此类设置暴露为 factory-id,如下例所示:
<jms:listener-container connection-factory="myConnectionFactory"
task-executor="myTaskExecutor"
destination-resolver="myDestinationResolver"
transaction-manager="myTransactionManager"
concurrency="10">
<jms:listener destination="queue.orders" ref="orderService" method="placeOrder"/>
<jms:listener destination="queue.confirmations" ref="confirmationLogger" method="log"/>
</jms:listener-container>
下表描述了所有可用的属性。有关各个属性的更多详细信息,请参阅 AbstractMessageListenerContainer 及其具体子类的类级别 Javadoc。该 Javadoc 还讨论了事务选择和消息重新投递场景。
| 属性 | <description> </description> |
|---|---|
|
此监听器容器的类型。可用选项包括 |
|
一个自定义监听器容器实现类的完整限定类名。
默认为 Spring 的标准 |
|
将此元素定义的设置以指定的 |
|
对 JMS |
|
对 Spring |
|
对用于解析 JMS |
|
对用于将 JMS 消息转换为监听器方法参数的 |
|
对一个 |
|
此监听器的 JMS 目标类型: |
|
响应的 JMS 目标类型: |
|
此监听器容器的 JMS 客户端 ID。当您使用持久订阅时,必须指定该 ID。 |
|
JMS 资源的缓存级别: |
|
原生 JMS 确认模式: |
|
对外部 |
|
为每个监听器启动的并发会话或消费者的数量。它可以是一个简单的数字,表示最大数量(例如, |
|
单个会话中可加载的最大消息数量。请注意,提高此数值可能会导致并发消费者出现饥饿现象。 |
|
用于接收调用的超时时间(以毫秒为单位)。默认值为 |
|
指定用于计算恢复尝试间隔的 |
|
指定恢复尝试之间的间隔时间,单位为毫秒。它提供了一种便捷的方式来创建一个具有指定间隔的 |
|
此容器应在其中启动和停止的生命周期阶段。数值越小,该容器启动得越早,停止得越晚。默认值为
|
使用 jms 命名空间支持来配置基于 JCA 的监听器容器非常相似,如下例所示:
<jms:jca-listener-container resource-adapter="myResourceAdapter"
destination-resolver="myDestinationResolver"
transaction-manager="myTransactionManager"
concurrency="10">
<jms:listener destination="queue.orders" ref="myMessageListener"/>
</jms:jca-listener-container>
下表描述了 JCA 变体可用的配置选项:
| 属性 | <description> </description> |
|---|---|
|
将此元素定义的设置以指定的 |
|
对 JCA |
|
对 |
|
对用于解析 JMS |
|
对用于将 JMS 消息转换为监听器方法参数的 |
|
此监听器的 JMS 目标类型: |
|
响应的 JMS 目标类型: |
|
此监听器容器的 JMS 客户端 ID。使用持久订阅时需要指定该值。 |
|
原生 JMS 确认模式: |
|
对 Spring 的 |
|
为每个监听器启动的并发会话数或消费者数量。它可以是一个简单的数字,表示最大数量(例如 |
|
单个会话中可加载的最大消息数量。请注意,提高此数值可能会导致并发消费者出现饥饿现象。 |