死信交換機有什麼用呢? 在建立佇列的時候 可以給這個佇列附帶乙個交換機, 那麼這個佇列作廢的訊息就會被重新發到附帶的交換機,然後讓這個交換機重新路由這條訊息。
通俗的說,就是訊息產生之後,因為設定了超時時間,在這段時間內訊息沒有被消費就會被扔到死信佇列裡面。
// 交換機名稱
private
static
final string destination_name =
"rabbitmq_topic"
;//訊息佇列
private
static
final string queuename =
"topic_queue"
;//routingkey
private
static
final string routingkey =
"topic.#"
;//配置死信佇列
private
static
final string dlxexchangename =
"dlx.exchange"
;private
static
final string dlxqueuename =
"dlx.queue"
;private
static
final string dlxroutingkey =
"#";
@test
public
void
producer()
throws ioexception, timeoutexception
只監聽了死信佇列的訊息,正常訊息無需監聽接收
/**
* 監聽死信佇列
** @throws ioexception
* @throws timeoutexception
* @throws interruptedexception
*/@test
public
void
dlxconsumer()
throws ioexception, timeoutexception, interruptedexception };
channel.
basicconsume
(dlxqueuename, consumer)
;}
這個我在之前的整合springboot的時候有實驗過。
channel.
basicnack
(envelope.
getdeliverytag()
,false
,false
);
這個和訊息超時差不多,只不過是設定了佇列的最大容量而已。
只需要把上面的**修改一下就可以了。
@test
public
void
producer()
throws ioexception, timeoutexception
system.out.
println
("訊息傳送完成......");
/** * 監聽死信佇列
rabbitmq死信佇列
死信佇列 dlx dead letter exchange 利用dlx,當訊息在乙個佇列中變成死信 dead message 之後,它能重新publish到另外乙個exchange,這個exchange就是dxl 訊息變成死信的幾種情況 訊息被拒絕 basic.reject basic.nack 並...
rabbitmq死信佇列
概念 當訊息成為死信時,會將該訊息放到死信交換機當中,這個交換機也繫結的其他佇列,還可以繼續進行消費。訊息什麼時候會變成死信 在配置檔案宣告佇列時指定死信交換機的名稱和死信交換機的路由key key x dead letter exchange value 死信交換機名稱 key x dead le...
RabbitMQ死信佇列
死信佇列 dlx,全稱為dead letter exchange,可以稱之為死信交換器,也有人稱之為死信郵箱.當訊息在乙個佇列中變成死信 dead message 之後,它能被重新被傳送到另乙個交換器中,這個交換器就是dlx,繫結dlx的佇列就稱之為死信佇列。訊息變成死信 般是由於以下幾種情況 1....