美文网首页
自动成团功能总结

自动成团功能总结

作者: 张起荣 | 来源:发表于2019-07-15 19:03 被阅读0次

    自动成团功能总结

    解决方案

    1.使用Redis key过期事件实现过期自动成团

    2.使用Quartz定时任务

    方案一.使用Redis key过期事件实现过期自动成团

    使用Spring Boot整合spring-data-redis整合实现

    实现思路

    • 修改配置:将键事件通知打开,notify-keyspace-events Ex
    • 配置事件监听容器
    • 编写监听事件的监听器
    • 客户端设置key有效期时,key的格式为GROUP_BUY:XXX

    代码实现

    pom.xml引入依赖

    <!--redis相关依赖-->
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.8.1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-redis</artifactId>
        <version>1.7.2.RELEASE</version>
    </dependency>
    

    配置类

    /**
     * 配置Redis监听容器
     * @author zqr
     * @date 2019-07-15
     */
    @Configuration
    public class RedisConfig{
        
        @Bean
        RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
            RedisMessageListenerContainer container = new RedisMessageListenerContainer();
            container.setConnectionFactory(connectionFactory);
            return container;
        }
    }
    

    key过期监听器

    /**
     * 自动拼团redis key过期通知
     *
     * @author zqr
     * @date 2019/7/11 20:28
     */
    @Component
    public class AutoGroupBuyRedisKeyExpireListener extends KeyExpirationEventMessageListener {
    
        /**
         * 默认构造方法,将监听器注入容器
         *
         * @param redisMessageListenerContainer 容器
         */
        public AutoGroupBuyRedisKeyExpireListener(RedisMessageListenerContainer redisMessageListenerContainer) {
            super(redisMessageListenerContainer);
        }
    
        /**
         * 针对redis数据失效事件,进行数据处理
         *
         * @param message
         * @param pattern
         */
        @Override
        public void onMessage(Message message, byte[] pattern) {
            System.out.println("-----------------------------------------------------------------------");
            System.out.println(message.toString());
        }
    }
    

    方案二.使用Quartz实现自动成团功能

    实现思路

    • 下单成功后,生成一个30分钟后运行的任务,30分钟可以配置
    • 30分钟后检查订单状态,如果未支付,则进行处理

    相关文章

      网友评论

          本文标题:自动成团功能总结

          本文链接:https://www.haomeiwen.com/subject/gmeokctx.html