過期時間TTL與死信佇列

2021-10-22 17:39:24 字數 1416 閱讀 2392

過期時間ttl表示可以對訊息設定預期的時間,在這個時間內都可以被消費者接收獲取;過了之後訊息將自動被刪除。

rabbitmq可以對訊息和佇列設定ttl。目前有兩種方法可以設定。

如果上述兩種方法同時使用,則訊息的過期時間以兩者之間ttl較小的那個數值為準。訊息在佇列的生存時間一旦超過設

置的ttl值,就稱為dead message被投遞到死信佇列,消費者將無法再收到該訊息。

設定

@bean

public queue queue5()

@test

void

contextloads2()

throws exception };

rabbittemplate.

convertandsend

("dead",""

,"hello springboot-dead"

,messagepostprocessor)

;}

dlx,全稱為dead-letter- exchange ,可以稱之為死信交換機,也有人稱之為死信郵箱。當訊息在乙個佇列中變 成死信

(dead message)之後,它能被重新傳送到另乙個交換機中,這個交換機就是dlx,繫結dlx的佇列就稱之為死信佇列。

訊息變成死信,可能是由於以下的原因:

dlx也是乙個正常的交換機,和一般的交換機沒有區別,它能在任何的佇列上被指定,實際上就是設定某乙個佇列的屬

性。當這個佇列中存在死信時,rabbitmq就會自動地將這個訊息重新發布到設定的dlx上去,進而被路由到另乙個隊

列,即死信佇列。

要想使用死信佇列,只需要在定義佇列的時候設定佇列引數x-dead- letter-exchange指定交換機即可。

TTL佇列訊息與死信佇列

ttl是time to live的縮寫,生存時間 rabbitmq支援訊息的過期時間,訊息傳送時可以指定,從訊息入佇列開始計算,只要超過佇列的超時時間配置,訊息就會自動清除 mapargs new hashmap args.put x message ttl 60000 channel.queued...

RabbitMQ 實戰指南 一 過期時間TTL

目前有兩種方式可以設定訊息的ttl 如果兩種方法一起使用,則訊息的ttl已較小的數值為準。1.1 通過設定佇列屬性來控制訊息的ttl 在宣告佇列的時候可以通過 x message ttl 屬性來控制訊息的ttl,這個引數的單位是毫秒。如果不設定 ttl.則表示此訊息不會過期 如果將 ttl 設定為 ...

Redis 過期時間與記憶體管理

當 redis 作為快取使用時 此時快取僅作為熱點資料提高服務的訪問效能 需要考慮記憶體的限制,以及如何隨著業務的增長,僅保留熱點資料。redis 所有的資料結構都可以設定過期時間,時間到了,redis 會自動刪除相應的物件。需要注意的 127.0.0.1 6379 set k1 aaa ok127...