修改kafka偏移量

This commit is contained in:
zren25
2025-03-31 19:21:45 +08:00
parent ed185efc67
commit a69a3757eb
6 changed files with 119 additions and 67 deletions

View File

@@ -3,6 +3,7 @@ package com.volvo.ai.analytic.center.job;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.volvo.ai.analytic.center.dto.PageDto;
import com.volvo.ai.analytic.center.dto.corpus.CorpusReportDTO; import com.volvo.ai.analytic.center.dto.corpus.CorpusReportDTO;
import com.volvo.ai.analytic.center.dto.req.DiFyReq; import com.volvo.ai.analytic.center.dto.req.DiFyReq;
import com.volvo.ai.analytic.center.entity.AiAnalysisErrors; import com.volvo.ai.analytic.center.entity.AiAnalysisErrors;
@@ -53,7 +54,8 @@ public class CorpusFailJob {
@Resource @Resource
private RocketMQTemplate rocketMqTemplate; private RocketMQTemplate rocketMqTemplate;
@Value("${batch.size}")
public int pageSize = 100;
@Autowired @Autowired
private TmTelephoneCorpusService tmTelephoneCorpusService; private TmTelephoneCorpusService tmTelephoneCorpusService;
@@ -65,7 +67,14 @@ public class CorpusFailJob {
public void corpusFailTask() { public void corpusFailTask() {
log.info("语料解析失败重试处理"); log.info("语料解析失败重试处理");
List<AiAnalysisErrors> aiAnalysisErrorsListlist = aiAnalysisErrorsService.queryAnalysisErrorList(BusinessTypeEnum.SMART_ASSISTANT.getCode()); Integer total = aiAnalysisErrorsService.queryCountAnalysisErrorList(BusinessTypeEnum.SMART_ASSISTANT.getCode());
log.info("语料解析失败重试处理数据量:{}", total);
int totalPages = PageDto.getTotalPages(total, pageSize);
log.info("语料解析失败重试处理数据量:{},总页数:{}", total, totalPages);
for (int i = 1; i <= totalPages; i++) {
int offset = (i - 1) * pageSize;
List<AiAnalysisErrors> aiAnalysisErrorsListlist = aiAnalysisErrorsService.queryAnalysisErrorList(BusinessTypeEnum.SMART_ASSISTANT.getCode(),offset, pageSize);
if(CollectionUtils.isNotEmpty(aiAnalysisErrorsListlist)) { if(CollectionUtils.isNotEmpty(aiAnalysisErrorsListlist)) {
log.info("语料解析失败重试处理 size:{}", aiAnalysisErrorsListlist.size()); log.info("语料解析失败重试处理 size:{}", aiAnalysisErrorsListlist.size());
aiAnalysisErrorsListlist.stream().forEach(aiAnalysisErrors -> { aiAnalysisErrorsListlist.stream().forEach(aiAnalysisErrors -> {
@@ -126,8 +135,10 @@ public class CorpusFailJob {
updateAiAnalysisErrors(aiAnalysisErrors, aiAnalysisErrors.getAiAnalysisRequestId()); updateAiAnalysisErrors(aiAnalysisErrors, aiAnalysisErrors.getAiAnalysisRequestId());
} }
}); });
} }
}
} }

View File

@@ -10,7 +10,7 @@ import java.util.List;
@Mapper @Mapper
public interface AiAnalysisErrorsMapper extends BaseMapper<AiAnalysisErrors> { public interface AiAnalysisErrorsMapper extends BaseMapper<AiAnalysisErrors> {
List<AiAnalysisErrors> queryAnalysisErrorList(@Param("businessType") String businessType);
int queryCountAnalysisErrorList(@Param("businessType") String businessType);
List<AiAnalysisErrors> queryAnalysisErrorList( @Param("businessType") String businessType, @Param("offset") int offset, @Param("pageSize") int pageSize);
} }

View File

@@ -17,6 +17,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.kafka.annotation.KafkaListener; import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.annotation.PartitionOffset;
import org.springframework.kafka.annotation.TopicPartition;
import org.springframework.messaging.support.MessageBuilder; import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@@ -54,7 +56,27 @@ public class CorpusProcessKafkaProducer {
private RocketMQTemplate rocketMqTemplate; private RocketMQTemplate rocketMqTemplate;
@PostMapping("corpusProcessKafkaConsumer") @PostMapping("corpusProcessKafkaConsumer")
@KafkaListener(topics = "${spring.kafka.topic}", groupId = "${spring.kafka.group}") @KafkaListener(
topicPartitions = @TopicPartition(
topic = "${spring.kafka.topic}",
partitions = {"0", "1","2", "3","4", "5","6", "7","8", "9", "10", "11"},
partitionOffsets = {
@PartitionOffset(partition = "0", initialOffset = "2792520"),
@PartitionOffset(partition = "1", initialOffset = "2596153"),
@PartitionOffset(partition = "2", initialOffset = "2536889"),
@PartitionOffset(partition = "3", initialOffset = "2782173"),
@PartitionOffset(partition = "4", initialOffset = "2616677"),
@PartitionOffset(partition = "5", initialOffset = "2529585"),
@PartitionOffset(partition = "6", initialOffset = "2761950"),
@PartitionOffset(partition = "7", initialOffset = "2581957"),
@PartitionOffset(partition = "8", initialOffset = "2530225"),
@PartitionOffset(partition = "9", initialOffset = "2803179"),
@PartitionOffset(partition = "10", initialOffset = "2599129"),
@PartitionOffset(partition = "11", initialOffset = "2546277")
}
),
groupId = "${spring.kafka.group}"
)
public void listen(List<String> recordMessages) { public void listen(List<String> recordMessages) {
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
try { try {
@@ -97,11 +119,6 @@ public class CorpusProcessKafkaProducer {
} }
}, 10000); }, 10000);
// CompletableFuture.runAsync(() -> {
// tmTelephoneCorpusService.runTelephoneCorpusDify(aicorpusTelephone);
// }, runTelephoneExecutor);
// // 关闭线程池
// runTelephoneExecutor.shutdown();
log.info(" dify处理耗时{}", System.currentTimeMillis() - startTimeDify); log.info(" dify处理耗时{}", System.currentTimeMillis() - startTimeDify);
} }
} catch (Exception e) { } catch (Exception e) {

View File

@@ -2,12 +2,13 @@ package com.volvo.ai.analytic.center.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.volvo.ai.analytic.center.entity.AiAnalysisErrors; import com.volvo.ai.analytic.center.entity.AiAnalysisErrors;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
public interface AiAnalysisErrorsService extends IService<AiAnalysisErrors> { public interface AiAnalysisErrorsService extends IService<AiAnalysisErrors> {
boolean saveAiAnalysisErrors(AiAnalysisErrors entity); boolean saveAiAnalysisErrors(AiAnalysisErrors entity);
int queryCountAnalysisErrorList(String businessType);
List<AiAnalysisErrors> queryAnalysisErrorList(String businessType); List<AiAnalysisErrors> queryAnalysisErrorList( String businessType, int offset,int pageSize);
} }

View File

@@ -30,9 +30,14 @@ public class AiAnalysisErrorsServiceImpl extends ServiceImpl<AiAnalysisErrorsMa
} }
} }
public List<AiAnalysisErrors> queryAnalysisErrorList(String businessType) { @Override
public int queryCountAnalysisErrorList(String businessType) {
return aiAnalysisErrorsMapper.queryCountAnalysisErrorList(businessType);
}
public List<AiAnalysisErrors> queryAnalysisErrorList( String businessType, int offset,int pageSize) {
//捞取异常表中属于社区的异常数据 //捞取异常表中属于社区的异常数据
return aiAnalysisErrorsMapper.queryAnalysisErrorList(businessType); return aiAnalysisErrorsMapper.queryAnalysisErrorList(businessType, offset, pageSize);
} }
} }

View File

@@ -1,6 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.volvo.ai.analytic.center.mapper.AiAnalysisErrorsMapper"> <mapper namespace="com.volvo.ai.analytic.center.mapper.AiAnalysisErrorsMapper">
<select id="queryCountAnalysisErrorList" resultType="java.lang.Integer">
select count(1) from (
SELECT
ai_analysis_request_id as aiAnalysisRequestId,
ai_analysis_request_type as aiAnalysisRequestType,
ai_analysis_error_handling_status as aiAnalysisErrorHandlingStatus,
retry_count as retryCount,
max_retry_count as maxRetryCount
FROM
tt_ai_analysis_errors
WHERE
is_deleted = 0
AND ai_analysis_request_type=#{businessType}
AND ai_analysis_error_handling_status = '0'
AND retry_count &lt;= max_retry_count
)tag
</select>
<select id="queryAnalysisErrorList" resultType="com.volvo.ai.analytic.center.entity.AiAnalysisErrors"> <select id="queryAnalysisErrorList" resultType="com.volvo.ai.analytic.center.entity.AiAnalysisErrors">
@@ -17,6 +34,7 @@
AND ai_analysis_request_type=#{businessType} AND ai_analysis_request_type=#{businessType}
AND ai_analysis_error_handling_status = '0' AND ai_analysis_error_handling_status = '0'
AND retry_count &lt;= max_retry_count AND retry_count &lt;= max_retry_count
LIMIT #{offset}, #{pageSize}
</select> </select>
</mapper> </mapper>