kafka實現(xiàn)延時消息
應用場景
用戶下單5分鐘后,給他發(fā)短信
用戶下單30分鐘后,如果用戶不付款就自動取消訂單
kafka無死信隊列
kafka本身沒有這種延時隊列的機制,像rabbitmq有自己的死信隊列,當一些消息在一定時間不消費時會發(fā)到死信隊列,由死信隊列來處理它們,上面的兩個需求如果是rabbitmq可以通過死信隊列實現(xiàn)的。
kafka有生產(chǎn)者攔截器
通過對生產(chǎn)者攔截器實現(xiàn)一個TTL的檢查,然后再通過類似netty里的延時隊列組件來實現(xiàn)消息的延時發(fā)送,發(fā)到咱們的死信隊列里

ProducerInterceptorTTL源碼

注冊攔截器

延時消息在某個時間段之后會送出

標簽:kafka