PHP如何通過rabbitMQ死信隊列實現業務的延時/定時操作


前言:

        之前也通過文章介紹過rabbitMQ的搭建以及在PHP開發場景下的一些使用。這個主要從rabbitMQ的web控制台介紹死信隊列的操作,以及代碼層面的小應用等。關於死信的原理,rabbitMQ的特性等可以在其他文章中找到,這里就不詳細介紹了。

 

場景:

       死信的場景主要是用於來實現延遲隊列,比如之前介紹的redis訂閱的過期事件。都是用於在未來某個時間段需要對某些數據進行操作(刪除/更新),就比如某些訂單創建成功后添加到一個隊列中。程序消費掉一部分已經支付過的訂單,而那些未支付狀態並且超過30分鍾(舉例的超時時間)就將其放入到延遲隊列進行批量處理。

 

死信隊列概述:

        可以把死信隊列理解為過濾后的水池,前面的隊列就像負責接水的大水池,只有當大水池滿了或者過濾篩選過的水才會流入小水池。最后小水池的水再進行飲用或者使用。

 

流程:

1. 創建1個死信交換機(正常創建即可)和一個死信隊列(正常創建),二者通過路由鍵綁定。

2. 創建1個業務交換機, 創建一個業務隊列,隊列關聯一個死信交換機及與交換機綁定的一個死信隊列路由鍵。

3. 最后將業務交換機與業務隊列綁定。

4. 代碼只需要對生產消息到業務隊列,消費死信隊列的消息就可以。

 

步驟:

1. 通過搭建的地址xxx.xxx.xxx.xxx:15672進入rabbitMQ的web控制台,新建虛擬機並進入。

2. 新建死信交換機和死信隊列,如下的ex_dlx,queue_dlx。

3. 新建業務交換機,和業務隊列,隊列關聯死信交換機。

    

4. 用代碼生產一條消息,然后查看業務隊列是否有新消息。

5. 兩分鍾后(創建隊列時設置)查看死信隊列是否有消息進來,以下表示死信隊列已經有新消息。

6. 最后對死信隊列的消息用代碼進行消費了,表示已經過期的數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM