Spring 2.5引入了XML命名空间以简化JMS的配置。使用JMS命名空间元素时,需要引用如下的JMS Schema:
<?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"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-2.5.xsd">
<!-- <bean/> definitions here -->
</beans>
这个命名空间由两级元素组成:<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>
上面的例子等同于在 第 19.4.4 节 “MessageListenerAdapter” 的示例中,定义两个不同的******容器和两个不同的 MessageListenerAdapter 。除了上面的属性外,listener 元素还具有几个可选的属性。下面的表格列出了所有的属性:
表 19.1. JMS listener 元素的属性
| 属性 | 描述 |
|---|---|
| id | ******容器的Bean名称。如果没有指定,将自动生成一个Bean名称。 |
| destination (必须) | ******目的地的名称,由 |
| ref (必须) | 处理对象的Bean名称 |
| method | 处理器中被调用的方法名。如果 |
| response-destination | 默认的响应目的地是发送响应消息抵达的目的地。 这用于请求消息没有包含"JMSReplyTo"域的情况。响应目的地类型被******容器的"destination-type"属性决定。记住:这仅仅适用于有返回值的******方法,因为每个结果对象都会被转化成响应消息。 |
| subscription | 持久订阅的名称,如果需要的话。 |
| selector | ******的一个可选的消息选择器。 |
<listener-container/>元素也有几个可选的属性。 这些属性允许像 基本的 JMS设置和资源引用一样来定义不同的策略 (例如 taskExecutor 和 destinationResolver)。 使用这些属性,可以定义很广泛的定制******容器,同时仍享有命名空间的便利。
<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也提高那个了事务选择和消息传输场景的讨论。
表 19.2. JMS <listener-container/> 元素的属性
| 属性 | 描述 |
|---|---|
| container-type | ******容器的类型。可用的选项是: |
| connection-factory | JMS |
| task-executor | JMS******调用者Spring |
| destination-resolver |
|
| message-converter |
|
| destination-type | ******的JMS目的地类型。可用的选项包含: |
| client-id | 这个******容器在JMS客户端的id。 |
| acknowledge | 本地JMS应答模式。可用的选项包含: |
| transaction-manager | Spring |
| concurrency | 每个******可激活的Session最大并发数。 |
| prefetch | 加载进每个Session的最大消息数。记住增加这个值会造成并发空闲。 |
使用“jms” Schema支持来配置基于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可用的配置选项描述如下表:
表 19.3. JMS <jca-listener-container/> 元素的属性
| 属性 | 描述 |
|---|---|
| resource-adapter | JCA |
| activation-spec-factory |
|
| destination-resolver |
|
| message-converter |
|
| destination-type | ******的JMS目的地类型。可用的选项包含 |
| client-id | 这个******容器在JMS客户端的id。 |
| acknowledge | 本地JMS应答模式。可用的选项包含: |
| transaction-manager | Spring |
| concurrency | 每个******可激活的Session最大并发数。 |
| prefetch | 加载进每个Session的最大消息数。记住增加这个值会造成并发空闲。 |

被折叠的 条评论
为什么被折叠?



