对于最新的稳定版本,请使用 Spring Framework 6.2.0! |
JMS 命名空间支持
Spring 提供了一个 XML 名称空间来简化 JMS 配置。使用 JMS namespace 元素,您需要引用 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/>
允许使用 Comments-Driven Listener endpoints 。<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
元素可以包含多个可选 Element。
下表描述了所有可用属性:
属性 | 描述 |
---|---|
|
托管侦听器容器的 Bean 名称。如果未指定,则 Bean 名称为 自动生成。 |
|
此侦听器的目标名称,通过 |
|
处理程序对象的 bean 名称。 |
|
要调用的处理程序方法的名称。如果 |
|
将响应消息发送到的默认响应目标的名称。这是
在请求消息不带有 |
|
长期订阅的名称 (如果有)。 |
|
此侦听器的可选消息选择器。 |
|
要为此侦听器启动的并发会话数或使用者数。该值可以是
一个表示最大数字的简单数字(例如 |
这<listener-container/>
元素也接受多个可选属性。这
允许自定义各种策略(例如,taskExecutor
和destinationResolver
) 以及基本的 JMS 设置和资源引用。通过使用
这些属性,您可以定义高度自定义的侦听器容器,而
仍然受益于命名空间的便利性。
您可以自动将此类设置公开为JmsListenerContainerFactory
由
指定id
的 bean 通过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>
下表描述了所有可用属性。请参阅类级 javadoc
的AbstractMessageListenerContainer
及其具体子类,以获取有关各个属性的更多详细信息。javadoc
还讨论了事务选择和消息重新传递方案。
属性 | 描述 |
---|---|
|
此侦听器容器的类型。可用选项包括 |
|
作为完全限定类名的自定义侦听器容器实现类。
默认值是 Spring 的标准 |
|
将此元素定义的设置公开为 |
|
对 JMS 的引用 |
|
对 Spring 的引用 |
|
对 |
|
对 |
|
对 |
|
此侦听器的 JMS 目标类型: |
|
响应的 JMS 目标类型: |
|
此侦听器容器的 JMS 客户端 ID。您必须在使用 Durable Subscriptions 的 Durable Subscriptions 中。 |
|
JMS 资源的缓存级别: |
|
本机 JMS 确认模式: |
|
对外部 |
|
每个侦听器要启动的并发会话或使用者的数量。它可以是
一个表示最大数字的简单数字(例如 |
|
要加载到单个会话中的最大消息数。请注意,引发此 number 可能会导致并发使用者不足。 |
|
用于接收调用的超时(以毫秒为单位)。默认值为 |
|
指定 |
|
指定恢复尝试之间的间隔(以毫秒为单位)。它提供了一个方便的
创建 |
|
此容器应在其中启动和停止的生命周期阶段。较低的
值,则此容器启动得越早,停止得越晚。默认值为 |
使用jms
schema 支持非常相似,
如下例所示:
<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 客户端 ID。使用 Durable Subscriptions 的 Durable Subscriptions 中。 |
|
本机 JMS 确认模式: |
|
对 Spring 的引用 |
|
每个侦听器要启动的并发会话或使用者的数量。它可以是
表示最大数字(例如 |
|
要加载到单个会话中的最大消息数。请注意,引发此 number 可能会导致并发使用者不足。 |