对于最新的稳定版本,请使用 Spring Framework 6.2.0spring-doc.cn

JMS 命名空间支持

Spring 提供了一个 XML 名称空间来简化 JMS 配置。使用 JMS namespace 元素,您需要引用 JMS 架构,如下例所示:spring-doc.cn

<?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 架构。

命名空间由三个顶级元素组成: , 和 . 允许使用 Comments-Driven Listener endpoints 。 并定义共享侦听器容器配置,并且可以包含子元素。 以下示例显示了两个侦听器的基本配置:<annotation-driven/><listener-container/><jca-listener-container/><annotation-driven/><listener-container/><jca-listener-container/><listener/>spring-doc.cn

<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 定义和两个不同的 bean 定义,如下所示 在使用 MessageListenerAdapter 中。除了显示的属性 在前面的示例中,元素可以包含多个可选 Element。 下表描述了所有可用属性:MessageListenerAdapterlistenerspring-doc.cn

表 1.JMS <listener> 元素的属性
属性 描述

idspring-doc.cn

托管侦听器容器的 Bean 名称。如果未指定,则 Bean 名称为 自动生成。spring-doc.cn

destination(必填)spring-doc.cn

此侦听器的目标名称,通过策略解析。DestinationResolverspring-doc.cn

ref(必填)spring-doc.cn

处理程序对象的 bean 名称。spring-doc.cn

methodspring-doc.cn

要调用的处理程序方法的名称。如果属性指向 或 Spring ,则可以省略此属性。refMessageListenerSessionAwareMessageListenerspring-doc.cn

response-destinationspring-doc.cn

将响应消息发送到的默认响应目标的名称。这是 在请求消息不带字段的情况下应用。这 type 由侦听器容器的属性确定。请注意,这仅适用于具有 return 值,每个 Result 对象都转换为响应消息。JMSReplyToresponse-destination-typespring-doc.cn

subscriptionspring-doc.cn

长期订阅的名称 (如果有)。spring-doc.cn

selectorspring-doc.cn

此侦听器的可选消息选择器。spring-doc.cn

concurrencyspring-doc.cn

要为此侦听器启动的并发会话数或使用者数。该值可以是 表示最大数字(例如,)的简单数字或表示下限 以及上限(例如)。请注意,指定的最小值只是一个提示 ,并且在运行时可能会被忽略。默认值是容器提供的值。53-5spring-doc.cn

该元素还接受多个可选属性。这 允许自定义各种策略(例如 和 )以及基本的 JMS 设置和资源引用。通过使用 这些属性,您可以定义高度自定义的侦听器容器,而 仍然受益于命名空间的便利性。<listener-container/>taskExecutordestinationResolverspring-doc.cn

您可以自动将此类设置公开为 指定要通过属性公开的 bean, 如下例所示:JmsListenerContainerFactoryidfactory-idspring-doc.cn

<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-doc.cn

表 2.JMS <listener-container> 元素的属性
属性 描述

container-typespring-doc.cn

此侦听器容器的类型。可用选项包括 、 、 、 或 (默认选项为 )。defaultsimpledefault102simple102defaultspring-doc.cn

container-classspring-doc.cn

作为完全限定类名的自定义侦听器容器实现类。 根据属性,默认值为 Spring 的标准或 。DefaultMessageListenerContainerSimpleMessageListenerContainercontainer-typespring-doc.cn

factory-idspring-doc.cn

将此元素定义的设置公开为具有指定值的设置,以便它们可以与其他端点重复使用。JmsListenerContainerFactoryidspring-doc.cn

connection-factoryspring-doc.cn

对 JMS Bean 的引用(默认 Bean 名称为 )。ConnectionFactoryconnectionFactoryspring-doc.cn

task-executorspring-doc.cn

对 JMS 侦听器调用程序的 Spring 的引用。TaskExecutorspring-doc.cn

destination-resolverspring-doc.cn

对解析 JMS 实例的策略的引用。DestinationResolverDestinationspring-doc.cn

message-converterspring-doc.cn

对将 JMS 消息转换为侦听器的策略的引用 method 参数。默认值为 .MessageConverterSimpleMessageConverterspring-doc.cn

error-handlerspring-doc.cn

对用于处理任何未捕获异常的策略的引用,该异常 可能会在执行 .ErrorHandlerMessageListenerspring-doc.cn

destination-typespring-doc.cn

此侦听器的 JMS 目标类型:、、、、 或。这可能会启用容器的 和 属性。默认值为 (它禁用 这三个属性)。queuetopicdurableTopicsharedTopicsharedDurableTopicpubSubDomainsubscriptionDurablesubscriptionSharedqueuespring-doc.cn

response-destination-typespring-doc.cn

响应的 JMS 目标类型:或 .默认值是 attribute 的值。queuetopicdestination-typespring-doc.cn

client-idspring-doc.cn

此侦听器容器的 JMS 客户端 ID。您必须在使用 Durable Subscriptions 的 Durable Subscriptions 中。spring-doc.cn

cachespring-doc.cn

JMS 资源的缓存级别:、、、、 或 .默认情况下 () ,缓存级别实际上是 ,除非 已指定外部事务管理器 — 在这种情况下,有效的 default 将是(假设 Jakarta EE 风格的事务管理,其中给定的 ConnectionFactory 是 XA 感知池)。noneconnectionsessionconsumerautoautoconsumernonespring-doc.cn

acknowledgespring-doc.cn

本机 JMS 确认模式:、、 、 或 .一个值 of 激活本地事务处理的 .作为替代方法,您可以指定 属性,在后面的表中进行了介绍。默认值为 .autoclientdups-oktransactedtransactedSessiontransaction-managerautospring-doc.cn

transaction-managerspring-doc.cn

对外部(通常是基于 XA 的 事务协调器,例如 Spring 的 )。如果未指定,则 使用 native acknowledgeledging (参见 attribute )。PlatformTransactionManagerJtaTransactionManageracknowledgespring-doc.cn

concurrencyspring-doc.cn

每个侦听器要启动的并发会话或使用者的数量。它可以是 表示最大数字(例如 )的简单数字或表示 下限以及上限(例如,)。请注意,指定的最小值只是一个 提示,并且可能会在运行时被忽略。默认值为 .您应该将并发性限制为 主题侦听器的大小,或者队列排序很重要。考虑将其提高为 通用队列。53-511spring-doc.cn

prefetchspring-doc.cn

要加载到单个会话中的最大消息数。请注意,引发此 number 可能会导致并发使用者不足。spring-doc.cn

receive-timeoutspring-doc.cn

用于接收调用的超时(以毫秒为单位)。默认值为 (one second)。 表示无超时。1000-1spring-doc.cn

back-offspring-doc.cn

指定用于计算恢复间隔的实例 尝试。如果 implementation 返回 , 侦听器容器不会进一步尝试恢复。设置此属性时,将忽略该值。默认值为 间隔为 5000 毫秒(即 5 秒)。BackOffBackOffExecutionBackOffExecution#STOPrecovery-intervalFixedBackOffspring-doc.cn

recovery-intervalspring-doc.cn

指定恢复尝试之间的间隔(以毫秒为单位)。它提供了一个方便的 方式创建具有指定间隔的 A。为了更多的恢复 选项,请考虑改为指定实例。默认值为 5000 毫秒 (即 5 秒)。FixedBackOffBackOffspring-doc.cn

phasespring-doc.cn

此容器应在其中启动和停止的生命周期阶段。较低的 值,则此容器启动得越早,停止得越晚。默认值为 ,这意味着容器会尽可能晚地启动,并在 尽快。Integer.MAX_VALUEspring-doc.cn

使用架构支持配置基于 JCA 的侦听器容器非常相似, 如下例所示:jmsspring-doc.cn

<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 变体的可用配置选项:spring-doc.cn

表 3.JMS <jca-listener-container/> 元素的属性
属性 描述

factory-idspring-doc.cn

将此元素定义的设置公开为具有指定值的设置,以便它们可以与其他端点重复使用。JmsListenerContainerFactoryidspring-doc.cn

resource-adapterspring-doc.cn

对 JCA Bean 的引用(默认 Bean 名称为 )。ResourceAdapterresourceAdapterspring-doc.cn

activation-spec-factoryspring-doc.cn

对 .默认值是自动检测 JMS provider 及其类(参见DefaultJmsActivationSpecFactory)。JmsActivationSpecFactoryActivationSpecspring-doc.cn

destination-resolverspring-doc.cn

对解析 JMS 的策略的引用。DestinationResolverDestinationsspring-doc.cn

message-converterspring-doc.cn

对将 JMS 消息转换为侦听器的策略的引用 method 参数。默认值为 .MessageConverterSimpleMessageConverterspring-doc.cn

destination-typespring-doc.cn

此侦听器的 JMS 目标类型:、、、、. 或。这可能会启用 , , 和容器的属性。默认值为 (它禁用 这三个属性)。queuetopicdurableTopicsharedTopicsharedDurableTopicpubSubDomainsubscriptionDurablesubscriptionSharedqueuespring-doc.cn

response-destination-typespring-doc.cn

响应的 JMS 目标类型:或 .默认值是 attribute 的值。queuetopicdestination-typespring-doc.cn

client-idspring-doc.cn

此侦听器容器的 JMS 客户端 ID。使用 Durable Subscriptions 的 Durable Subscriptions 中。spring-doc.cn

acknowledgespring-doc.cn

本机 JMS 确认模式:、、 、 或 .一个值 of 激活本地事务处理的 .作为替代方法,您可以指定 稍后描述的属性。默认值为 .autoclientdups-oktransactedtransactedSessiontransaction-managerautospring-doc.cn

transaction-managerspring-doc.cn

对 Spring 或 a 的引用,用于为每个 Spring 启动 XA 事务 incoming message 的 intent 语句。如果未指定,则使用 native acknowledgeledging (请参阅 attribute )。JtaTransactionManagerjakarta.transaction.TransactionManageracknowledgespring-doc.cn

concurrencyspring-doc.cn

每个侦听器要启动的并发会话或使用者的数量。它可以是 表示最大数字(例如 )的简单数字或表示 下限以及上限(例如,)。请注意,指定的最小值只是一个 hint 中,当您使用 JCA 侦听器容器时,通常会在运行时忽略该 Hint 的 TRICK 容器。 默认值为 1。53-5spring-doc.cn

prefetchspring-doc.cn

要加载到单个会话中的最大消息数。请注意,引发此 number 可能会导致并发使用者不足。spring-doc.cn