1、電商支付系統中,使用者下單後N分鐘不支付,自動取消訂單。
2、使用者瀏覽商品長時間後還沒下單,後續推播相關產品和優惠券。
3、使用者註冊或修改生日後:生日簡訊推播等。
4、7天后的自動確認收貨等。。。
......
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
using (var channel = Rabbit.Instance.DefaultConnection.CreateModel())
{
//定義佇列
channel.QueueDeclare("dead");
//定義延時路由
IDictionary<string, object> dic = new Dictionary<string, object>();
dic.Add("x-delayed-type", "direct");
channel.ExchangeDeclare("ex-dead", "x-delayed-message", arguments: dic);
channel.QueueBind("dead", "ex-dead", "dead");
var p1 = channel.CreateBasicProperties();
IDictionary<string, object> header = new Dictionary<string, object>();
header.Add("x-delay", 6000);
p1.Headers = header;
var p2 = channel.CreateBasicProperties();
IDictionary<string, object> header2 = new Dictionary<string, object>();
header2.Add("x-delay", 16000);
p2.Headers = header2;
channel.BasicPublish("ex-dead", "dead", false, p1, Encoding.UTF8.GetBytes("6秒就過期了1。"));
channel.BasicPublish("ex-dead", "dead", false, p2, Encoding.UTF8.GetBytes("16秒就過期了2。"));
}
如果說,死信佇列的適合場景,是短時間的固定間隔時間。
那麼說,延時佇列外掛的適合場景,就是更進一步的短時間內的隨機時間。