AMQ學習筆記 - 12. Spring-JmsTemplate特性設置


概述


這是關於JmsTemplate的最后一篇總結,且只會介紹幾個比較重要的特性。

消息的遞送模式


在發送消息給時,可以告知這是持久化的消息,還是非持久化的消息。如果是非持久化的消息,broker會將消息保留在內存,否則就會持久化到磁盤。非持久化:高吞吐,易丟失;持久化:低吞吐,不易丟失。
相關的API:
Class org.springframework.jms.core.JmsTemplate
  • public void setDeliveryMode(int deliveryMode)
    設置是否持久化要發送的消息:1-非持久化;2-持久化
  • public int getDeliveryMode()
    獲取持久化模式的設置:1-非持久化;2-持久化
  • public void setDeliveryPersistent(boolean deliveryPersistent)
    設置是否持久化要發送的消息,true-持久化;false-非持久化

消息的優先級


在發送時,可以為消息指定優先級,以期高優先級的消息能更快的遞送給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
  • public void setPriority(int priority)
    為將要發送的消息設置優先級。
  • public int getPriority()
    獲取優先級

消息的存活時間


在發送時,可以設置消息的存活時間,默認為永久有效。
Class org.springframework.jms.core.JmsTemplate
  • public void setTimeToLive(long timeToLive)
    設置消息的存活時間,毫秒單位
  • public long getTimeToLive()
    獲取消息的存活時間,毫秒單位

服務質量開關


如果不打開服務質量的開關,消息的遞送模式、優先級和存活時間的設置就沒有作用。
Class org.springframework.jms.core.JmsTemplate
  • public void setExplicitQosEnabled(boolean explicitQosEnabled)
    發送消息的時候,是否使用QOS的值(deliveryMode, priority, timeToLive)
  • public boolean isExplicitQosEnabled()
    如果是true,deliveryMode, priority, 和 timeToLive的值將被使用;否則使用默認的值。
P.S.
在JMS API中, 消息的遞送模式、優先級和存活時間可以在發送的時候統一設置:
  • javax.jms.MessageProducer#send(Message message, int deliveryMode, int priority, long timeToLive):void

接收等待時間


JmsTemplate的接收是阻塞式的接收,默認會一直阻塞等待,直到接收到了消息。也可以設置一個最長的等待時間參數,超過這個時間,接收的方法將得到null的結果。
Class org.springframework.jms.core.JmsTemplate
  • public void setReceiveTimeout(long receiveTimeout)
    設置接收等待時間,毫秒單位
  • public long getReceiveTimeout()
    獲取接收等待時間,毫秒單位






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM