RabbitMq死信佇列

2021-10-04 22:03:33 字數 2390 閱讀 9774

死信交換機有什麼用呢? 在建立佇列的時候 可以給這個佇列附帶乙個交換機, 那麼這個佇列作廢的訊息就會被重新發到附帶的交換機,然後讓這個交換機重新路由這條訊息。

通俗的說,就是訊息產生之後,因為設定了超時時間,在這段時間內訊息沒有被消費就會被扔到死信佇列裡面。

// 交換機名稱

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....