public
static
void
main
(string[
] args)
throws ioexception, timeoutexception
connection connection = factory.
newconnection()
; channel channel = connection.
createchannel()
; map
arguments =
newhashmap
<
>()
; arguments.
put(
"x-message-ttl"
,10000);
//設定過期時間10秒
channel.
queuedeclare
(queue_name,
false
,false
,false
, arguments)
; channel.
basicpublish(""
, route_key,
true
, null, message.
getbytes()
);system.out.
println
("message delivery ["
+ message +
"]")
;}
通過設定佇列屬性的方式來設定ttl
,也就是說佇列中所有的訊息都是有相同的ttl
屬性。
也可以通過設定單條訊息的方式設定:
public
static
void
main
(string[
] args)
throws ioexception, timeoutexception
設定佇列
屬性:一旦訊息過期,就會從佇列中抹去。
設定訊息
屬性:即使訊息過期,也不會馬上從佇列中抹去,因為每條訊息是否過期時在即將投遞到消費者之前判定的。
解析:因為第一種方法裡,佇列中已過期的訊息肯定在佇列頭部,rabbitmq
只要定期從隊頭開始掃瞄是否有過期訊息即可,而第二種方法裡,每條訊息的過期時間不同,如果要刪除所有過期訊息,勢必要掃瞄整個佇列,所以不如等到此訊息即將被消費時再判定是否過期,如果過期,再進行刪除。
queue.declare 命令中的x-expires
引數控制queue
被自動刪除前可以處於未使用狀態的時間
。
用於表示超期時間的x-expires
引數值以微秒
為單位,並且服從和x-message-ttl
一樣的約束條件,且不能設定為0
。
map
args =
newhashmap
();args.
put(
"x-expires"
,1800000);
channel.
queuedeclare
("order"
,false
,false
,false
, args)
;
TTL生存時間
ttl 生存時間 ttl是ip協議包中的乙個值,它告訴網路路由器包在網路中的時間是否太長而應被丟棄。有很多原因使包在一定時間內不能被傳遞到目的地。例如,不正確的路由表可能導致包的無限迴圈。乙個解決方法就是在一段時間後丟棄這個包,然後給傳送者乙個報文,由傳送者決定是否要重發。ttl的初值通常是系統預設...
TTL 生存時間 介紹
ttl time to live 生存時間,是ip協議包中的乙個值,它告訴網路路由器包在網路中的時間是否太長而應被丟棄。有很多原因使包在一定時間內不能被傳遞到目的地。例如,不正確的路由表可能導致包的無限迴圈。乙個解決方法就是在一段時間後丟棄這個包,然後給傳送者乙個報文,由傳送者決定是否要重發。ttl...
Hbase命令設定TTL 編碼設定TTL
建立表的時候指定 create t task log 檢視ttl desc t task log 預設 ttl forever 修改ttl 禁用表 disable t task log 設定ttl值,作用於列族cf alter t task log name cf ttl 86400 恢復表 ena...