|
对于最新的稳定版本,请使用 Spring Framework 7.0.6! |
JMS 命名空间支持
Spring 提供了一个 XML 命名空间,用于简化 JMS 配置。要使用 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 模式。 |
命名空间包含三个顶级元素:<code>0</code>、<code>1</code> 和<code>2</code>。<code>3</code> 用于启用 <a t="C7">基于注解的监听器端点</a>。<code>4</code> 和 <code>5</code> 定义共享的监听器容器配置,并可以包含 <code>6</code> 个子元素。 以下示例显示了两个监听器的基本配置:
<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 元素还可以包含几个可选属性。下表描述了所有可用属性:
| 属性 | 描述 |
|---|---|
|
用于托管监听器容器的 bean 名称。如果未指定,将自动生成一个 bean 名称。 |
|
此监听器的目标名称,通过 |
|
处理程序对象的 bean 名称。 |
|
要调用的处理程序方法的名称。如果 |
|
默认的响应目标的名称,用于发送响应消息。如果请求消息不包含 |
|
持久化订阅的名称,如果有的话。 |
|
此监听器的可选消息选择器。 |
|
此监听器启动的并发会话或消费者数量。此值可以是表示最大数量的简单数字(例如, |
<listener-container/> 元素还接受几个可选属性。这允许对各种策略(例如 taskExecutor 和 destinationResolver)以及基本的 JMS 设置和资源引用进行自定义。通过使用这些属性,您可以在仍受益于命名空间便利性的同时,定义高度自定义的监听器容器。
您可以通过对 id 属性指定要通过 factory-id 属性公开的 bean 的 JmsListenerContainerFactory,从而自动将此类设置公开。
如下面的示例所示:
<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 还提供了关于事务选择和消息重新传递场景的讨论。
| 属性 | 描述 |
|---|---|
|
此监听器容器的类型。可用选项为 |
|
作为全限定类名的自定义监听器容器实现类。
默认情况下,根据 |
|
将此元素定义的设置作为 |
|
对 JMS |
|
对Spring |
|
对用于解析JMS |
|
对将JMS消息转换为监听器方法参数的 |
|
对在 |
|
此监听器的JMS目标类型: |
|
响应的JMS目标类型: |
|
此监听器容器的 JMS 客户端 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变体的可用配置选项:
| 属性 | 描述 |
|---|---|
|
将此元素定义的设置作为 |
|
对JCA |
|
对 |
|
对用于解析JMS |
|
对将JMS消息转换为监听器方法参数的 |
|
此监听器的JMS目标类型: |
|
响应的JMS目标类型: |
|
此监听器容器的 JMS 客户端 ID。在使用持久化订阅时需要指定。 |
|
原生的JMS确认模式: |
|
对 Spring |
|
为每个监听器启动的并发会话或消费者数量。它可以是一个简单的数字,表示最大数量(例如 |
|
单个会话中要加载的最大消息数。请注意,提高此数值可能导致并发消费者出现饥饿现象。 |