使用场景
- 订单在十分钟之内未支付则自动取消
- 新建店铺,如果在十天内都没有上传商品,则自动发送消息提醒
- 用户注册成功后,如果三天内没有登录则进行短信提醒
插件
RabbitMQ实现延迟队列需要使用插件
# 查看插件
rabbitmq-plugins list
# 复制插件到容器
docker cp 插件名 容器id:/plugins
# 启用插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
消息在ttl之后才会进入队列,进入队列前没有顺序之分
const (
	ExchangeName = "delay"
	QueueName    = "queue"
)
func init() {
	channel, _ := utils.GetRabbitMQChannel()
	table := amqp.Table{}
	table["x-delayed-type"] = "direct"
	_ = channel.ExchangeDeclare(ExchangeName, "x-delayed-message", false, false, false, false, table)
	queue, _ := channel.QueueDeclare(QueueName, false, false, false, false, nil)
	_ = channel.QueueBind(queue.Name, "delayMsg", ExchangeName, false, nil)
}
func main() {
	channel, _ := utils.GetRabbitMQChannel()
	headers := make(amqp.Table)
	headers["x-delay"] = 10000
	_ = channel.Publish(ExchangeName, "delayMsg", false, false,
		amqp.Publishing{
			Headers:     headers,
			ContentType: "text/plain",
			Body:        []byte("hello rabbit"),
		})
}










