Browse Source

优化

master
xsx 2 years ago
parent
commit
985d4077c5
  1. 16
      im-commom/src/main/java/com/bx/imcommon/mq/RedisMQPullTask.java
  2. 11
      im-commom/src/main/java/com/bx/imcommon/mq/RedisMQTemplate.java
  3. 5
      im-platform/src/main/java/com/bx/implatform/entity/User.java
  4. 2
      im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java

16
im-commom/src/main/java/com/bx/imcommon/mq/RedisMQPullTask.java

@ -28,8 +28,7 @@ import java.util.concurrent.TimeUnit;
@Component
public class RedisMQPullTask implements CommandLineRunner {
private static final ScheduledThreadPoolExecutor EXECUTOR_SERVICE =
ThreadPoolExecutorFactory.getThreadPoolExecutor();
private static final ScheduledThreadPoolExecutor EXECUTOR = ThreadPoolExecutorFactory.getThreadPoolExecutor();
@Autowired(required = false)
private List<RedisMQConsumer> consumers = Collections.emptyList();
@ -48,11 +47,14 @@ public class RedisMQPullTask implements CommandLineRunner {
// 获取泛型类型
Type superClass = consumer.getClass().getGenericSuperclass();
Type type = ((ParameterizedType)superClass).getActualTypeArguments()[0];
EXECUTOR_SERVICE.execute(new Runnable() {
EXECUTOR.execute(new Runnable() {
@Override
public void run() {
List<Object> datas = new LinkedList<>();
try {
if(redisMQTemplate.isClose()){
return;
}
if (consumer.isReady()) {
String key = consumer.generateKey();
// 拉取一个批次的数据
@ -71,17 +73,16 @@ public class RedisMQPullTask implements CommandLineRunner {
}
} catch (Exception e) {
log.error("数据消费异常,队列:{}", queue, e);
EXECUTOR_SERVICE.schedule(this, period, TimeUnit.MICROSECONDS);
return;
}
// 继续消费数据
if (!EXECUTOR_SERVICE.isShutdown()) {
if (!EXECUTOR.isShutdown()) {
if (datas.size() < batchSize) {
// 数据已经消费完,等待下一个周期继续拉取
EXECUTOR_SERVICE.schedule(this, period, TimeUnit.MICROSECONDS);
EXECUTOR.schedule(this, period, TimeUnit.MICROSECONDS);
} else {
// 数据没有消费完,直接开启下一个消费周期
EXECUTOR_SERVICE.execute(this);
EXECUTOR.execute(this);
}
}
}
@ -107,6 +108,7 @@ public class RedisMQPullTask implements CommandLineRunner {
@PreDestroy
public void destory() {
log.info("消费线程停止...");
ThreadPoolExecutorFactory.shutDown();
}
}

11
im-commom/src/main/java/com/bx/imcommon/mq/RedisMQTemplate.java

@ -2,8 +2,10 @@ package com.bx.imcommon.mq;
import org.apache.logging.log4j.util.Strings;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import java.util.Objects;
import java.util.Properties;
/**
@ -38,4 +40,13 @@ public class RedisMQTemplate extends RedisTemplate<String, Object> {
Integer secVersion = Integer.valueOf(arr[1]);
return firVersion > 6 || (firVersion == 6 && secVersion >= 2);
}
Boolean isClose(){
try {
return getConnectionFactory().getConnection().isClosed();
}catch (Exception e){
return true;
}
}
}

5
im-platform/src/main/java/com/bx/implatform/entity/User.java

@ -84,9 +84,4 @@ public class User {
*/
private Integer type;
/**
* 客户端id,用于uni-push推送
*/
private String cid;
}

2
im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java

@ -108,7 +108,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
@Override
public void register(RegisterDTO dto) {
User user = this.findUserByUserName(dto.getUserName());
if (Objects.isNull(user)) {
if (!Objects.isNull(user)) {
throw new GlobalException(ResultCode.USERNAME_ALREADY_REGISTER);
}
user = BeanUtils.copyProperties(dto, User.class);

Loading…
Cancel
Save