Spring 提供了一个 XML 命名空间来简化 JMS 配置。使用 JMS namespace 元素,您需要引用 JMS 模式,如以下示例所示:Spring中文文档

<?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 模式。
1 引用 JMS 模式。

命名空间由三个顶级元素组成:、 和 。 允许使用注释驱动的侦听器端点。 并定义共享侦听器容器配置,并可以包含子元素。 以下示例显示了两个侦听器的基本配置:<annotation-driven/><listener-container/><jca-listener-container/><annotation-driven/><listener-container/><jca-listener-container/><listener/>Spring中文文档

<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 中。除了显示的属性之外 在前面的示例中,该元素可以包含多个可选元素。 下表描述了所有可用属性:MessageListenerAdapterlistenerSpring中文文档

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

idSpring中文文档

托管侦听器容器的 Bean 名称。如果未指定,则 Bean 名称为 自动生成。Spring中文文档

destination(必填)Spring中文文档

此侦听器的目标名称,通过策略解析。DestinationResolverSpring中文文档

ref(必填)Spring中文文档

处理程序对象的 Bean 名称。Spring中文文档

methodSpring中文文档

要调用的处理程序方法的名称。如果该属性指向 或 Spring ,则可以省略此属性。refMessageListenerSessionAwareMessageListenerSpring中文文档

response-destinationSpring中文文档

要向其发送响应消息的默认响应目标的名称。这是 适用于不带有字段的请求消息。这 此目标的类型由 listener-container 的属性决定。请注意,这仅适用于具有 返回值,每个结果对象都转换为响应消息。JMSReplyToresponse-destination-typeSpring中文文档

subscriptionSpring中文文档

持久订阅的名称(如果有)。Spring中文文档

selectorSpring中文文档

此侦听器的可选消息选择器。Spring中文文档

concurrencySpring中文文档

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

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

您可以自动将此类设置公开为 指定要通过属性公开的 Bean, 如以下示例所示:JmsListenerContainerFactoryidfactory-idSpring中文文档

<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 以获取有关各个属性的更多详细信息。javadoc 还讨论了事务选择和消息重新传递方案。Spring中文文档

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

container-typeSpring中文文档

此侦听器容器的类型。可用选项为 、 、 或 (默认选项为 )。defaultsimpledefault102simple102defaultSpring中文文档

container-classSpring中文文档

作为完全限定类名的自定义侦听器容器实现类。 默认值为 Spring 的标准值或 ,具体取决于属性。DefaultMessageListenerContainerSimpleMessageListenerContainercontainer-typeSpring中文文档

factory-idSpring中文文档

将此元素定义的设置公开为具有指定值的设置,以便可以与其他终结点重用这些设置。JmsListenerContainerFactoryidSpring中文文档

connection-factorySpring中文文档

对 JMS Bean 的引用(默认 Bean 名称为 )。ConnectionFactoryconnectionFactorySpring中文文档

task-executorSpring中文文档

对 JMS 侦听器调用程序的 Spring 的引用。TaskExecutorSpring中文文档

destination-resolverSpring中文文档

对解析 JMS 实例的策略的引用。DestinationResolverDestinationSpring中文文档

message-converterSpring中文文档

对将 JMS 消息转换为侦听器的策略的引用 方法参数。默认值为 .MessageConverterSimpleMessageConverterSpring中文文档

error-handlerSpring中文文档

对处理任何未捕获异常的策略的引用 可能在执行 .ErrorHandlerMessageListenerSpring中文文档

destination-typeSpring中文文档

此侦听器的 JMS 目标类型:、、、、 或。这可能会启用容器的 和 属性。默认值为 (禁用 这三个属性)。queuetopicdurableTopicsharedTopicsharedDurableTopicpubSubDomainsubscriptionDurablesubscriptionSharedqueueSpring中文文档

response-destination-typeSpring中文文档

响应的 JMS 目标类型:或 。默认值为属性的值。queuetopicdestination-typeSpring中文文档

client-idSpring中文文档

此侦听器容器的 JMS 客户机标识。使用时必须指定它 持久订阅。Spring中文文档

cacheSpring中文文档

JMS 资源的高速缓存级别:、、、或 。默认情况下 (),缓存级别为 有效 ,除非 已指定外部事务管理器 — 在这种情况下,有效的 默认值将是(假设 Jakarta EE 风格的交易管理,其中给定的 ConnectionFactory 是一个 XA 感知池)。noneconnectionsessionconsumerautoautoconsumernoneSpring中文文档

acknowledgeSpring中文文档

本机 JMS 确认模式:、、 或 。一个值 的激活本地交易的 .或者,您可以指定 该属性,在表的后面部分进行了描述。默认值为 。autoclientdups-oktransactedtransactedSessiontransaction-managerautoSpring中文文档

transaction-managerSpring中文文档

对外部(通常基于 XA 的 事务协调器,如 Spring 的 )。如果未指定, 使用本机确认(请参阅属性)。PlatformTransactionManagerJtaTransactionManageracknowledgeSpring中文文档

concurrencySpring中文文档

要为每个侦听器启动的并发会话数或使用者数。它可以是 指示最大数字的简单数字(例如,)或指示 下限和上限(例如,)。请注意,指定的最小值只是一个 提示,在运行时可能会被忽略。默认值为 。应将并发限制为 主题侦听器的情况,或者队列排序是否重要。考虑将其提高 常规队列。53-511Spring中文文档

prefetchSpring中文文档

要加载到单个会话中的最大消息数。请注意,提出此 数量可能会导致并发消费者的匮乏。Spring中文文档

receive-timeoutSpring中文文档

用于接听呼叫的超时(以毫秒为单位)。默认值为 (one 第二)。 表示无超时。1000-1Spring中文文档

back-offSpring中文文档

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

recovery-intervalSpring中文文档

指定恢复尝试之间的间隔(以毫秒为单位)。它提供了一个方便的 创建具有指定间隔的方法。为了更多的恢复 选项中,请考虑改为指定实例。默认值为 5000 毫秒 (即五秒钟)。FixedBackOffBackOffSpring中文文档

phaseSpring中文文档

此容器应启动和停止的生命周期阶段。越低 值,则此容器启动得越早,停止得越晚。默认值为 ,这意味着容器启动时间越晚越好,停止时间越大 越快越好。Integer.MAX_VALUESpring中文文档

使用模式支持配置基于 JCA 的侦听器容器非常相似, 如以下示例所示:jmsSpring中文文档

<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中文文档

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

factory-idSpring中文文档

将此元素定义的设置公开为具有指定值的设置,以便可以与其他终结点重用这些设置。JmsListenerContainerFactoryidSpring中文文档

resource-adapterSpring中文文档

对 JCA Bean 的引用(默认 Bean 名称为 )。ResourceAdapterresourceAdapterSpring中文文档

activation-spec-factorySpring中文文档

对 .缺省值是自动检测 JMS provider 及其类(请参阅 DefaultJmsActivationSpecFactory)。JmsActivationSpecFactoryActivationSpecSpring中文文档

destination-resolverSpring中文文档

对解析 JMS 的策略的参考。DestinationResolverDestinationsSpring中文文档

message-converterSpring中文文档

对将 JMS 消息转换为侦听器的策略的引用 方法参数。默认值为 。MessageConverterSimpleMessageConverterSpring中文文档

destination-typeSpring中文文档

此侦听器的 JMS 目标类型:、、、。 或。这可能会使 、 、 和容器的属性。默认值为 (禁用 这三个属性)。queuetopicdurableTopicsharedTopicsharedDurableTopicpubSubDomainsubscriptionDurablesubscriptionSharedqueueSpring中文文档

response-destination-typeSpring中文文档

响应的 JMS 目标类型:或 。默认值为属性的值。queuetopicdestination-typeSpring中文文档

client-idSpring中文文档

此侦听器容器的 JMS 客户机标识。使用时需要指定 持久订阅。Spring中文文档

acknowledgeSpring中文文档

本机 JMS 确认模式:、、 或 。一个值 的激活本地交易的 .或者,您可以指定 稍后描述的属性。默认值为 。autoclientdups-oktransactedtransactedSessiontransaction-managerautoSpring中文文档

transaction-managerSpring中文文档

对 Spring 的引用或 a 用于启动每个 XA 事务 传入消息。如果未指定,则使用本机确认(请参阅属性)。JtaTransactionManagerjakarta.transaction.TransactionManageracknowledgeSpring中文文档

concurrencySpring中文文档

要为每个侦听器启动的并发会话数或使用者数。它可以是 表示最大数字的简单数字(例如)或表示 下限和上限(例如,)。请注意,指定的最小值仅为 提示,通常在使用 JCA 侦听器容器时在运行时被忽略。 默认值为 1。53-5Spring中文文档

prefetchSpring中文文档

要加载到单个会话中的最大消息数。请注意,提出此 数量可能会导致并发消费者的匮乏。Spring中文文档