簡體   English   中英

使用 Spring 引導為 IBM MQ 設置每條消息的傳遞延遲

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM