[英]Set Delivery Delay per message for IBM MQ using Spring boot
當我想為每條消息(IBM MQ 和 Spring 引導)設置傳遞延遲時,我遇到了問題。 正常的方法是使用jmsTemplate.deliveryDelay = 324234
但問題是我們正在更改jmsTemplate
的屬性,它是一個全局 object (Singlteon)。 所以我想為每條消息發送不同的傳遞延遲,而不是所有消息的延遲(每條消息的延遲可以不同)。
似乎正確的方法是在 header 中為每條消息設置此傳遞,如下面的代碼。 但是當我嘗試它時,它沒有用。 我立即收到消息。
jmsMessage.setLongProperty(
DELAY_DELIVERY_TAG,
deliveryDelayService.delay(message)
)
有誰知道我如何設置每條消息的傳遞延遲?
關於JMS 2.0 交付延遲的 IBM 文檔說您只能在生產者(即JmsTemplate
)上設置它,而不是消息:
當應用程序發送消息時,可以使用MessageProducer .setDeliveryDelay(long deliveryDelay) 或JMSProducer .setDeliveryDelay(long deliveryDelay) 指定以毫秒為單位的傳遞延遲
每次調用都可以創建一個新的JmsTemplate
; 只需仔細閱讀緩存連接資源並遵循JmsTemplate Java API中的建議即可:
注意:與此模板一起使用的 ConnectionFactory 應返回池連接(或單個共享連接)以及池會話和消息生產者。 否則,臨時 JMS 操作的性能將受到影響
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.