菜单
首页 > > 淘宝经验>正文

淘宝多久自动确认收货(解析淘宝七天自动确认收货)

2022-07-03 12:41:37  admin 浏览
目前常见的应用软件都有消息的延迟推送的影子,应用也极为广泛,例如: 淘宝七天自动确认收货。在我们签收商品后,物流系统会在七天后延时发送一个消息给支付系统,通知支付系统将款打给

目前常见的应用软件都有消息的延迟推送的影子,应用也极为广泛,例如: www.51md.cn

淘宝七天自动确认收货。在我们签收商品后,物流系统会在七天后延时发送一个消息给支付系统,通知支付系统将款打给商家,这个过程持续七天, m.51md.cn

就是使用了消息中间件的延迟推送功能。 m.51md.cn

0c2b8b636262aff4e322eacd5f64233.jpg

51秒懂

12306 购票支付确认页面。我们在选好票点击确定跳转的页面中往往都会有倒计时,代表着 30 分钟内订单不确认的话将会自动取消订单。 51秒懂网

其实在下订单那一刻开始购票业务系统就会发送一个延时消息给订单系统,延时30分钟,告诉订单系统订单未完成,如果我们在30分钟内完成了订单, www.51md.cn

则可以通过逻辑代码判断来忽略掉收到的消息。 51秒懂电商创业网

在上面两种场景中,如果我们使用下面两种传统解决方案无疑大大降低了系统的整体性能和吞吐量: 51秒懂网

使用 redis 给订单设置过期时间,最后通过判断 redis 中是否还有该订单来决定订单是否已经完成。这种解决方案相较于消息的延迟推送性能较低,

因为我们知道 redis 都是存储于内存中,我们遇到恶意下单或者刷单的将会给内存带来巨大压力。使用传统的数据库轮询来判断数据库表中订单的状态,

这无疑增加了IO次数,性能极低。使用 jvm 原生的 DelayQueue ,也是大量占用内存,而且没有持久化策略,系统宕机或者重启都会丢失订单信息。

消息延迟推送的实现

在 RabbitMQ 3.6.x 之前我们一般采用死信队列+TTL过期时间来实现延迟队列,我们这里不做过多介绍。

在 RabbitMQ 3.6.x 开始,RabbitMQ 官方提供了延迟队列的插件,可以下载放置到 RabbitMQ 根目录下的 plugins 下。

首先我们创建交换机和消息队列,application.properties 中配置与上一篇文章相同。

import org.springframework.amqp.core.*;import org.springframework.context.annotation.Bean;import org.springframework.context.
annotation.Configuration;import java.util.HashMap;import java.util.Map;@Configurationpublic class MQConfig {    public 

static final String LAZY_EXCHANGE ="Ex.LazyExchange";    public static final String LAZY_QUEUE = "MQ.LazyQueue";    
public static final String LAZY_KEY = "lazy.#"; 
    @Bean
    public TopicExchange lazyExchange(){        //Map<String, Object> pros = new HashMap<>();
        //设置交换机支持延迟消息推送
        //pros.put("x-delayed-message", "topic");
        TopicExchange exchange = new TopicExchange(LAZY_EXCHANGE, true, false, pros);
        exchange.setDelayed(true);        return exchange;
    }    @Bean
    public Queue lazyQueue(){        return new Queue(LAZY_QUEUE, true);
    }    @Bean
    public Binding lazyBinding(){        return BindingBuilder.bind(lazyQueue()).to(lazyExchange()).with(LAZY_KEY);
    }
}

我们在 Exchange 的声明中可以设置exchange.setDelayed(true)来开启延迟队列,也可以设置为以下内容传入交换机声明的方法中,

因为第一种方式的底层就是通过这种方式来实现的。

//Map<String, Object> pros = new HashMap<>();        //设置交换机支持延迟消息推送        
//pros.put("x-delayed-message", "topic");
        TopicExchange exchange = new TopicExchange(LAZY_EXCHANGE, true, false, pros);

发送消息时我们需要指定延迟推送的时间,我们这里在发送消息的方法中传入参数 new MessagePostProcessor() 是为了获得 Message对象,

因为需要借助 Message对象的api 来设置延迟时间。

推荐阅读:

淘宝女装直播需要什么设备

开网店不会做图怎么办?(分享四个免费又实用的套板工具)

淘宝店铺转让后果严重吗(公司也跟着转吗?后果解析)

淘宝双十二营销策略都有哪些(分享方法,赚得盆满钵满)

新手开淘宝网店不知道怎么装修自己的店铺(分享新手怎样装修淘宝店铺,能够达到想要的效果)

秒懂电商版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 3547800866@qq.com举报,一经查实,本站将立刻删除。

相关阅读