RabbitMQ 九 訊息持久化

2022-04-09 23:48:18 字數 2310 閱讀 5792

rabbitmq系列rabbitmq(一)——簡介rabbitmq(二)——模式型別rabbitmq(三)——簡單模式

rabbitmq(四)——工作佇列模式

rabbitmq(五)——發布訂閱模式

rabbitmq(六)——路由模式

rabbitmq(七)——主題模式

rabbitmq(八)——訊息確認

rabbitmq(九)——訊息持久化

rabbitmq(十)——訊息優先順序

對於交換機(exchange)與佇列(queue)的持久化只需要將durable屬性設定為true即可,當重啟rabbitmq服務後,交換機和佇列都會恢復,但是當只有佇列的durable屬性設定為true時,重啟後會造成訊息丟失。

首先是設定生產者的交換機和佇列的持久化屬性durable為true,再設定ibasicproperties.persistent為true,發布時帶上basicproperties

//

1.建立連線工廠

connectionfactory factory = new

connectionfactory()

;//2.建立連線

using (var connection =factory.createconnection())

//3.建立管道

using (var channel =connection.createmodel())

";var body =encoding.utf8.getbytes(msg);

channel.basicpublish(

"exchange

", "", null

, body);

console.writeline($

"發布成功:");

thread.sleep(

1000

); }

console.readkey();

}

view code

可以看到10條訊息寫入成功

現在重啟下rabbitmq服務

可以看到上圖中的訊息在重啟後沒有消費就丟失了,下面進行訊息的持久化,交換機和佇列的durable都設定為true。

修改建立交換機**,將預設的false設定為true,basicproperties.persistent設定為true

//

1.建立連線工廠

connectionfactory factory = new

connectionfactory()

;//2.建立連線

using (var connection =factory.createconnection())

//3.建立管道

using (var channel =connection.createmodel())

";var body =encoding.utf8.getbytes(msg);

channel.basicpublish(

"exchange

", ""

, basicproperties, body);

console.writeline($

"發布成功:");

thread.sleep(

1000

); }

console.readkey();

}

view code

發布訊息和重啟之後都是是10條訊息。

這樣就完成了訊息持久的設定了

rabbitmq 訊息持久化

專案案例 channel.exchangedeclare my exchange,builtinexchangetype.topic,true durable 引數設定為 truechannel.queuedeclare my queue,true,false,false maps.newhashm...

RabbitMQ訊息持久化

三 訊息持久化 四 總結 回到頂部 一 前言 如果我們希望即使在rabbitmq服務重啟的情況下,也不會丟失訊息,我們可以將queue與message都設定為可持久化的 durable 這樣可以保證絕大部分情況下我們的rabbitmq訊息不會丟失。當然還是會有一些小概率事件會導致訊息丟失。回到頂部 ...

RabbitMQ訊息持久化

如果我們希望即使在rabbitmq服務重啟的情況下,也不會丟失訊息,我們可以將queue與message都設定為可持久化的 durable 這樣可以保證絕大部分情況下我們的rabbitmq訊息不會丟失。當然還是會有一些小概率事件會導致訊息丟失。在windows環境下,在rabbitmq的安裝目錄 s...