天天看點

訂單下單成功後如何等待支付成功

場景:

在訂單場景下,通常要求下單完成後,使用者在一定時間内支付成功,支付完成後才會通知下遊服務。

方案一:在不使用事務消息的情況下實作

最簡單的方式是啟動一個定時任務或輪詢的方式,每隔一段時間掃描訂單表,比對未支付的訂單的下單時間,将超過時間的訂單回收。

這種方式每次都需要掃描龐大的訂單資訊,這對系統造成了不小的壓力。

方案二:使用RocketMQ提供的延遲消息機制

往MQ發一個延遲消息,消費到這個消息後去檢查訂單的支付狀态,如果訂單已經支付,就往下遊發送下單的通知。

如果沒有支付,就再發一個延遲消息。當達到指定次數後依舊,則把訂單回收。

這個方案就不用對全部的訂單表進行掃描,而隻需要每次處理一個單獨的訂單消息。

方案二:使用上了事務消息