配置 workId 和 datacenterId

设置工作机器ID(workerId)和数据中心ID(datacenterId),这两个参数用于确保在分布式环境中生成的ID是唯一的。使用配置 yaml 文件的方式获取,配置方式参考:https://blog.csdn.net/qq_35201802/article/details/143727005

my-app:
  snowflake:
    workerId: 1
    datacenterId: 1

初始化雪花算法生成器

package com.shore.my_spring_demo.web.config;

import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.annotation.Resource;

@Configuration
public class IdGeneratorConfig {
    @Resource
    private CustomSnowflakeConfig customSnowflakeConfig;

    @Bean
    public Snowflake snowflakeIdGenerator() {
        return IdUtil.getSnowflake(customSnowflakeConfig.getWorkerId(), customSnowflakeConfig.getDatacenterId());
    }
}

生成唯一 id

在服务层或控制器层中,注入Snowflake实例,并调用它的nextId()方法来生成唯一ID。

package com.shore.my_spring_demo.service.id.impl;

import cn.hutool.core.lang.Snowflake;
import com.shore.my_spring_demo.service.id.IdService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class IdServiceImpl implements IdService {
    @Resource
    private Snowflake snowflake;

    @Override
    public Long generateId() {
        return snowflake.nextId();
    }
}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐