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