spring boot common

Codacy Badge Jdk Version License Maven Central

Using

common-all

<dependency>
  <groupId>link.thingscloud</groupId>
  <artifactId>spring-boot-common-all</artifactId>
  <version>${spring-boot-common.version}</version>
</dependency>

implementation 'link.thingscloud:spring-boot-common-all:${spring-boot-common.version}'

common-core

<dependency>
  <groupId>link.thingscloud</groupId>
  <artifactId>spring-boot-common-core</artifactId>
  <version>${spring-boot-common.version}</version>
</dependency>

implementation 'link.thingscloud:spring-boot-common-core:${spring-boot-common.version}'

common-aop

<dependency>
  <groupId>link.thingscloud</groupId>
  <artifactId>spring-boot-common-aop</artifactId>
  <version>${spring-boot-common.version}</version>
</dependency>

implementation 'link.thingscloud:spring-boot-common-aop:${spring-boot-common.version}'

@Logging
public String echo(String now) {
    return now;
}
    
@Logging(level = LoggingLevel.DEBUG, result = false)
public String echo(String now) {
    return now;
}

common-data-redis

<dependency>
  <groupId>link.thingscloud</groupId>
  <artifactId>spring-boot-common-data-redis</artifactId>
  <version>${spring-boot-common.version}</version>
</dependency>

implementation 'link.thingscloud:spring-boot-common-data-redis:${spring-boot-common.version}'

分布式锁

// 极端异常,如有严格要求,建议使用redisson
// 当主从同步时,锁成功,主挂了,从升为主时,锁key未同步过来,会导致第二次锁也会成功
@Autowired
private SimpleDistributedLocker simpleDistributedLocker;

private RedisResponseCallback callback = new RedisResponseCallback() {
    @Override
    public void onSucceed() {
        log.info("lock {} onSucceed", key);
    }

    @Override
    public void onFailure() {
        log.info("lock {} onFailure", key);
    }

    @Override
    public void onException(Throwable cause) {
        log.error("lock {} onException", key, cause);
    }
};

simpleDistributedLocker.tryLock(key, callback);
simpleDistributedLocker.lock(key, callback);

分布式并发控制

@Autowired
private SimpleDistributedLimiter simpleDistributedLimiter;
// 是否达到并发最大值
boolean result = simpleDistributedLimiter.permit(100);
// 清楚过期数据,过期时间 60秒
simpleDistributedLimiter.clear(60000);

消息队列

基于redis消息队列实现

实现 RedisMessageListenerAdapter, 通过RedisTopic主叫或者实现其getTopic()方法
1.使用list数据结构
rpush/lpush : 元素入队列右侧/左侧

lpop/rpop : 元素入队列左侧/右侧
blpop/brpop : 元素入队列左侧/右侧 - 没有元素则阻塞

动态配置

基于redis发布订阅实现配置动态加载

License

Apache License, Version 2.0 Copyright (C) Apache Software Foundation