SpringBoot RabbitMq延時佇列例項

2021-10-05 06:07:42 字數 999 閱讀 6603

根據訪客預約的到訪時間,延時下發人臉資訊

先安裝rabbitmq,在安裝延時佇列外掛程式(死信交換機)

配置檔案(佇列+交換機+routingkey)

org.springframework.boot

spring-boot-starter-amqp

com.alibaba

fastjson

1.2.62

@configuration

public

class

facedelayqueueconfig

@bean

public queue facedelayqueue()

@bean

public binding facedelaybinding()

}

佇列訊息實體

public

class

facerabbitaddmessage

implements

serializable

訊息生產者

@service

public

class

facerabbitmessageserviceimpl);

}}

訊息消費者

@component

@rabbitlistener

(queues = facedelayqueueconfig.face_queue_delay)

public

class

facerabbitmessagereceiver

}

Redis 延時佇列

延時佇列可以通過 redis 的 zset 有序列表 來實現。我們將訊息序列化成乙個字串作為 zset 的 value,這個訊息的到期處理時間作為 score,然後用多個執行緒輪詢 zset 獲取到期的任務進行處理,多個執行緒是為了保障可用性,萬一掛了乙個執行緒還有其它執行緒可以繼續處理。因為有多個...

mysql 延時佇列 rabbitmq 延時佇列

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

利用延時佇列實現自動定時重試 基於PHP實現

搭建 框架 建立 test 目錄,編寫生產者和消費者 跑指令碼 phpamqplib channel connection exception exchange helper protocol message wire io test retryp.php retryc.php index.php ...