概述
這是關於JmsTemplate的最后一篇總結,且只會介紹幾個比較重要的特性。
消息的遞送模式
在發送消息給時,可以告知這是持久化的消息,還是非持久化的消息。如果是非持久化的消息,broker會將消息保留在內存,否則就會持久化到磁盤。非持久化:高吞吐,易丟失;持久化:低吞吐,不易丟失。
相關的API:
Class org.springframework.jms.core.JmsTemplate |
|
消息的優先級
在發送時,可以為消息指定優先級,以期高優先級的消息能更快的遞送給consumer。在javax.jms.Message#getJMSPriority()方法,有如下的說明:
JMS API為消息定義了10個優先級,0最低,9最高。0-4作為一般的優先級,5-9作為加速優先級。JMS API不要求實現者能夠嚴格按照消息的優先級的順序把消息遞送給consumer,但是應該盡量的實現加速優先級的消息能在一般優先級的消息的前面,遞送給consumer。
下面是JmsTemplate中的API:
Class org.springframework.jms.core.JmsTemplate |
|
消息的存活時間
在發送時,可以設置消息的存活時間,默認為永久有效。
Class org.springframework.jms.core.JmsTemplate |
|
服務質量開關
如果不打開服務質量的開關,消息的遞送模式、優先級和存活時間的設置就沒有作用。
Class org.springframework.jms.core.JmsTemplate |
|
在JMS API中,
消息的遞送模式、優先級和存活時間可以在發送的時候統一設置:
- javax.jms.MessageProducer#send(Message message, int deliveryMode, int priority, long timeToLive):void
接收等待時間
JmsTemplate的接收是阻塞式的接收,默認會一直阻塞等待,直到接收到了消息。也可以設置一個最長的等待時間參數,超過這個時間,接收的方法將得到null的結果。
Class org.springframework.jms.core.JmsTemplate |
|