feat:数据资产客户端新增数据库连接池服务类
parent
5c13d4ba74
commit
3f8d1fd13b
|
@ -1,12 +1,10 @@
|
||||||
package com.ruoyi.dataTransform.consumer;
|
package com.ruoyi.dataTransform.consumer;
|
||||||
|
|
||||||
import com.alibaba.druid.pool.DruidDataSource;
|
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.rabbitmq.client.Channel;
|
import com.rabbitmq.client.Channel;
|
||||||
import com.ruoyi.dataAsset.config.DataAssetClientConfig;
|
|
||||||
import com.ruoyi.dataAsset.constant.QueueNameConstants;
|
import com.ruoyi.dataAsset.constant.QueueNameConstants;
|
||||||
import com.ruoyi.dataAsset.domain.DataSource;
|
import com.ruoyi.dataAsset.domain.DataSource;
|
||||||
import com.ruoyi.dataAsset.util.DataSourceUtil;
|
import com.ruoyi.dataAsset.service.ConnectionPoolService;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import org.springframework.amqp.core.Message;
|
import org.springframework.amqp.core.Message;
|
||||||
import org.springframework.amqp.rabbit.annotation.Queue;
|
import org.springframework.amqp.rabbit.annotation.Queue;
|
||||||
|
@ -15,7 +13,6 @@ import org.springframework.amqp.support.converter.MessageConverter;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -32,7 +29,7 @@ public class DataSourceConsumer {
|
||||||
private RedisTemplate<String, String> redisTemplate;
|
private RedisTemplate<String, String> redisTemplate;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private DataAssetClientConfig druidDataSourceFactory;
|
private ConnectionPoolService connectionPoolService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageConverter messageConverter;
|
private MessageConverter messageConverter;
|
||||||
|
@ -48,22 +45,16 @@ public class DataSourceConsumer {
|
||||||
String messageId = message.getMessageProperties().getMessageId();
|
String messageId = message.getMessageProperties().getMessageId();
|
||||||
try {
|
try {
|
||||||
Long count = redisTemplate.opsForSet().add(QueueNameConstants.DATASOURCE_MESSAGE, messageId);
|
Long count = redisTemplate.opsForSet().add(QueueNameConstants.DATASOURCE_MESSAGE, messageId);
|
||||||
if (count > 0) {
|
if (count != null&&count > 0) {
|
||||||
// 正常消费消息
|
// 正常消费消息
|
||||||
DruidDataSource druidDataSource = DataSourceUtil.createDataSource(dataSource);
|
|
||||||
// 新增或替换数据源
|
|
||||||
Long id = dataSource.getId();
|
Long id = dataSource.getId();
|
||||||
if(druidDataSourceFactory.getMap().containsKey(id)){
|
// 如果已经存在
|
||||||
// 获取旧的
|
if(connectionPoolService.hasKey(id)){
|
||||||
DruidDataSource source = druidDataSourceFactory.get(id);
|
|
||||||
// 替换
|
|
||||||
druidDataSourceFactory.put(id,druidDataSource);
|
|
||||||
// 关闭旧的
|
// 关闭旧的
|
||||||
source.close();
|
connectionPoolService.closeDataSource(id);
|
||||||
}else {
|
|
||||||
//新增
|
|
||||||
druidDataSourceFactory.put(id, druidDataSource);
|
|
||||||
}
|
}
|
||||||
|
// 新增或替换数据源
|
||||||
|
connectionPoolService.put(dataSource);
|
||||||
// 消费成功 手动确认
|
// 消费成功 手动确认
|
||||||
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
|
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
|
||||||
log.info("数据源消费者接收到消息,消息内容:{},消费消息成功!", JSON.toJSONString(dataSource));
|
log.info("数据源消费者接收到消息,消息内容:{},消费消息成功!", JSON.toJSONString(dataSource));
|
||||||
|
|
Loading…
Reference in New Issue