1、x-max-length:
消息條數限制,該參數是非負整數值。限制加入queue中消息的條數。先進先出原則,超過10條后面的消息會頂替前面的消息。
2、x-max-length-bytes
消息容量限制,該參數是非負整數值。該參數和x-max-length目的一樣限制隊列的容量,但是這個是靠隊列大小(bytes)來達到限制。
3、x-message-ttl
消息存活時間,該參數是非負整數值.創建queue時設置該參數可指定消息在該queue中待多久,可根據x-dead-letter-routing-key和x-dead-letter-exchange生成可延遲的死信隊列。
4、x-max-priority
消息優先級,創建queue時arguments可以使用x-max-priority參數聲明優先級隊列 。該參數應該是一個整數,表示隊列應該支持的最大優先級。建議使用1到10之間。目前使用更多的優先級將消耗更多的資源(Erlang進程)。
設置該參數同時設置死信隊列時或造成已過期的低優先級消息會在未過期的高優先級消息后面執行。該參數會造成額外的CPU消耗。
5、x-expires
存活時間,創建queue時參數arguments設置了x-expires參數,該queue會在x-expires到期后queue消息,親身測試直接消失(哪怕里面有未消費的消息)。
6、x-dead-letter-exchange和x-dead-letter-routing-key
創建queue時參數arguments設置了x-dead-letter-routing-key和x-dead-letter-exchange,會在x-message-ttl時間到期后把消息放到x-dead-letter-routing-key和x-dead-letter-exchange指定的隊列中達到延遲隊列的目的。
創建queue的時候,就可以設置以上參數
@Bean public Queue queue() { Map<String, Object> arguments = new HashMap<>(); //消息條數限制,該參數是非負整數值。限制加入queue中消息的條數。先進先出原則,超過10條后面的消息會頂替前面的消息。 arguments.put("x-max-length", 10); //消息容量限制,該參數是非負整數值。該參數和x-max-length目的一樣限制隊列的容量,但是這個是靠隊列大小(bytes)來達到限制。 arguments.put("x-max-length-bytes", 1024); /** * 消息存活時間,該參數是非負整數值.創建queue時設置該參數可指定消息在該queue中待多久, * 可根據x-dead-letter-routing-key和x-dead-letter-exchange生成可延遲的死信隊列。 */ arguments.put("x-message-ttl", 10000); /** * 消息優先級,創建queue時arguments可以使用x-max-priority參數聲明優先級隊列 。該參數應該是一個整數,表示隊列應該支持的最大優先級。 * 建議使用1到10之間。目前使用更多的優先級將消耗更多的資源(Erlang進程)。 * 設置該參數同時設置死信隊列時或造成已過期的低優先級消息會在未過期的高優先級消息后面執行。 * 該參數會造成額外的CPU消耗。 */ arguments.put("x-max-priority", 5); /** * 存活時間,創建queue時參數arguments設置了x-expires參數,該queue會在x-expires到期后queue消息, * 親身測試直接消失(哪怕里面有未消費的消息)。 */ arguments.put("x-expires", 60000); /** * 創建queue時參數arguments設置了x-dead-letter-routing-key和x-dead-letter-exchange, * 會在x-message-ttl時間到期后把消息放到x-dead-letter-routing-key和x-dead-letter-exchange指定的隊列中達到延遲隊列的目的。 */ arguments.put("x-dead-letter-exchange", "TopExchangeName"); arguments.put("x-dead-letter-routing-key", "ttl.*.value");//這里的routing-key也可以是隊列名稱,當消息過期后會轉發到這個exchange對應的routing-key,達到延時隊列效果 return new Queue(topDDL, true, false, false, arguments); //隊列持久 }
來源:https://blog.csdn.net/qq_26656329/article/details/77891793