?
This document uses PHP Chinese website manual Release
Spring 2.5引入了XML命名空間以簡(jiǎn)化JMS的配置。使用JMS命名空間元素時(shí),需要引用如下的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>
這個(gè)命名空間由兩級(jí)元素組成:<listener-container/>
和 <jca-listener-container/>
,它們都可以包含一個(gè)或這個(gè)多個(gè) <listener/>
子元素。下面是一個(gè)基本配置的示例,包含兩個(gè)監(jiān)聽(tīng)器。
<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?節(jié) “MessageListenerAdapter
” 的示例中,定義兩個(gè)不同的監(jiān)聽(tīng)器容器和兩個(gè)不同的 MessageListenerAdapter
。除了上面的屬性外,listener
元素還具有幾個(gè)可選的屬性。下面的表格列出了所有的屬性:
表?19.1.?JMS listener
元素的屬性
屬性 | 描述 |
---|---|
id |
監(jiān)聽(tīng)器容器的Bean名稱(chēng)。如果沒(méi)有指定,將自動(dòng)生成一個(gè)Bean名稱(chēng)。 |
destination (必須) |
監(jiān)聽(tīng)器目的地的名稱(chēng),由 |
ref (必須) |
處理對(duì)象的Bean名稱(chēng) |
method |
處理器中被調(diào)用的方法名。如果 |
response-destination |
默認(rèn)的響應(yīng)目的地是發(fā)送響應(yīng)消息抵達(dá)的目的地。 這用于請(qǐng)求消息沒(méi)有包含"JMSReplyTo"域的情況。響應(yīng)目的地類(lèi)型被監(jiān)聽(tīng)器容器的"destination-type"屬性決定。記?。哼@僅僅適用于有返回值的監(jiān)聽(tīng)器方法,因?yàn)槊總€(gè)結(jié)果對(duì)象都會(huì)被轉(zhuǎn)化成響應(yīng)消息。 |
subscription |
持久訂閱的名稱(chēng),如果需要的話(huà)。 |
selector |
監(jiān)聽(tīng)器的一個(gè)可選的消息選擇器。 |
<listener-container/>
元素也有幾個(gè)可選的屬性。
這些屬性允許像 基本的 JMS設(shè)置和資源引用一樣來(lái)定義不同的策略 (例如
taskExecutor 和 destinationResolver)。
使用這些屬性,可以定義很廣泛的定制監(jiān)聽(tīng)器容器,同時(shí)仍享有命名空間的便利。
<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
類(lèi)和具體子類(lèi)的Javadoc來(lái)了解每個(gè)屬性的細(xì)節(jié)。這部分的Javadoc也提高那個(gè)了事務(wù)選擇和消息傳輸場(chǎng)景的討論。
表?19.2.?JMS <listener-container/>
元素的屬性
屬性 | 描述 |
---|---|
container-type |
監(jiān)聽(tīng)器容器的類(lèi)型。可用的選項(xiàng)是:
|
connection-factory |
JMS |
task-executor |
JMS監(jiān)聽(tīng)器調(diào)用者Spring |
destination-resolver |
|
message-converter |
|
destination-type |
監(jiān)聽(tīng)器的JMS目的地類(lèi)型??捎玫倪x項(xiàng)包含:
|
client-id |
這個(gè)監(jiān)聽(tīng)器容器在JMS客戶(hù)端的id。 |
acknowledge |
本地JMS應(yīng)答模式。可用的選項(xiàng)包含:
|
transaction-manager |
Spring |
concurrency |
每個(gè)監(jiān)聽(tīng)器可激活的Session最大并發(fā)數(shù)。 |
prefetch |
加載進(jìn)每個(gè)Session的最大消息數(shù)。記住增加這個(gè)值會(huì)造成并發(fā)空閑。 |
使用“jms” Schema支持來(lái)配置基于JCA的監(jiān)聽(tīng)器容器很相似。
<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可用的配置選項(xiàng)描述如下表:
表?19.3.?JMS <jca-listener-container/>
元素的屬性
屬性 | 描述 |
---|---|
resource-adapter |
JCA |
activation-spec-factory |
|
destination-resolver |
|
message-converter |
|
destination-type |
監(jiān)聽(tīng)器的JMS目的地類(lèi)型??捎玫倪x項(xiàng)包含 |
client-id |
這個(gè)監(jiān)聽(tīng)器容器在JMS客戶(hù)端的id。 |
acknowledge |
本地JMS應(yīng)答模式??捎玫倪x項(xiàng)包含: |
transaction-manager |
Spring |
concurrency |
每個(gè)監(jiān)聽(tīng)器可激活的Session最大并發(fā)數(shù)。 |
prefetch |
加載進(jìn)每個(gè)Session的最大消息數(shù)。記住增加這個(gè)值會(huì)造成并發(fā)空閑。 |