Java分布式和单体系统高并发生成唯一订单号

支持单体系统和分布式系统 

分布式系统生成单号前提条件:分布式系统使用了同一个Redis数据库

   @Resource
    private RedissonClient redissonClient;
    
   /**
     * 唯一订单号生成
     * 格式:yyMMddHHmmssSSS00001
     *
     * @return 唯一单号
     */
    public String genOrderNo() {
        RAtomicLong atomicLong = redissonClient.getAtomicLong("orderNoIncr");
        long num = atomicLong.incrementAndGet();
        atomicLong.expire(5, TimeUnit.SECONDS);

        // 不足5位左侧补0
        String numStr = String.format("%05d", num);
        //格式化当前日期为yyMMddHHmmssSSS的格式,此处做了封装
        return DateFormatUtil.dateToStr(new Date(), "yyMMddHHmmssSSS") + numStr;
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值