RabbitMQ延時佇列實現訂單關閉

2021-10-08 23:14:23 字數 2244 閱讀 4907

#配置virtual-host虛擬主機

spring.rabbitmq.virtual-host=test_order_close

#ip位址

spring.rabbitmq.host=

127.0

.0.1

#使用者名稱 密碼

spring.rabbitmq.username=guest

spring.rabbitmq.password=guest

#連線埠號

spring.rabbitmq.port=

5672

#死信佇列

test.dlx.exchange=test_order_dlx_exchange

test.dlx.queue=test_order_dlx_queue

test.dlx.routingkey=dlx

##備胎交換機

test.order.exchange=test_order_exchange

test.order.queue=test_order_queue

test.order.routingkey=test.order

@component

public

class

deadlettermqconfig")

private string orderexchange;

/** * 訂單佇列

*/@value

("$"

)private string orderqueue;

/** * 訂單路由key

*/@value

("$"

)private string orderroutingkey;

/** * 死信交換機

*/@value

("$"

)private string dlxexchange;

/** * 死信佇列

*/@value

("$"

)private string dlxqueue;

/** * 死信路由

*/@value

("$"

)private string dlxroutingkey;

/** * 宣告死信交換機

*/@bean

public directexchange dlxexchange()

/** * 宣告死信佇列

*/@bean

public queue dlxqueue()

/** * 宣告訂單業務交換機

*/@bean

public directexchange orderexchange()

/** * 宣告訂單佇列 核心操作一

*/@bean

public queue orderqueue()

/** * 繫結訂單佇列到訂單交換機

*/@bean

public binding orderbinding()

/** * 繫結死信佇列到死信交換機

*/@bean

public binding binding()

}

(

"/addorder"

)public string addorder()

rabbittemplate.

convertandsend

(orderexchange,orderroutingkey,orderid,

messagepostprocessor()

);return

"success";}

//處理待傳送訊息

private messagepostprocessor messagepostprocessor()

};}

@component

public

class

orderdlxconsumer

//根據id查詢

getorder

(orderid);if

(null == orderentity)

//獲取狀態

integer orderstatus=orderentity.

getorderstatus()

;//判斷未支付 , 關閉訂單if(

0==orderstatus)

}}

RabbitMQ實現延時佇列

rabbitmq實現延時佇列一般有兩種形式 第一種方式 利用兩個特性 time to live ttl dead letter exchanges dlx a訊息佇列過期 傳送給b佇列 第二種方式 利用rabbitmq的外掛程式x delay message rabbitmq可以針對佇列設定x ex...

基於 rabbitmq 實現的延時佇列

雖然 rabbitmq 沒有延時佇列的功能,但是稍微變動一下也是可以實現的 存在乙個倒計時機制 time to live ttl 當到達時間點的時候會觸發乙個傳送訊息的事件 dead letter exchanges dlx 基於第一點,我利用的是訊息存在過期時間這一特性,訊息一旦過期就會變成dea...

mysql 延時佇列 rabbitmq 延時佇列

前言 某個產品 或者訂單,有個有效期 過了有效期要取消 方法一 寫個指令碼,用crontab 定時掃瞄 改變狀態 但是最低只能一分鐘 不適合 方法二 用swoole得毫秒定時器,每秒鐘去掃瞄表 明顯占用資源 mysql受不了 方法三 用rabbitmq延時佇列 一開始將其丟入mq 死信佇列,設定有效...