|
@@ -173,9 +173,9 @@ public class CoreServiceImpl implements CoreService {
|
|
|
|
|
|
|
|
|
// 定义一个阻塞队列
|
|
|
- private static final ArrayBlockingQueue<MatchContent> queue = new ArrayBlockingQueue<>(100000);
|
|
|
+ private static final ArrayBlockingQueue<MatchContent> matchQueue = new ArrayBlockingQueue<>(100000);
|
|
|
|
|
|
- private static final ArrayBlockingQueue<PlanAccount> queue1 = new ArrayBlockingQueue<>(100000);
|
|
|
+ private static final ArrayBlockingQueue<PlanAccount> coreQueue = new ArrayBlockingQueue<>(100000);
|
|
|
|
|
|
|
|
|
private static final int size = 5;
|
|
@@ -186,51 +186,19 @@ public class CoreServiceImpl implements CoreService {
|
|
|
|
|
|
|
|
|
@Override
|
|
|
- public void matchContent() {
|
|
|
- // 启动生产者线程
|
|
|
- new Thread(() -> {
|
|
|
- List<PlanAccount> matchPlanAccounts = planAccountService.getMatchPlanAccount();
|
|
|
- if (CollectionUtils.isEmpty(matchPlanAccounts)) {
|
|
|
- return;
|
|
|
- }
|
|
|
- for (PlanAccount planAccount : matchPlanAccounts) {
|
|
|
- GetContentsParam param = new GetContentsParam();
|
|
|
- param.setAccountId(planAccount.getAccountId());
|
|
|
- param.setPlanId(planAccount.getPlanId());
|
|
|
- LongArticleSystemContentVO longArticleSystemContentVO = aigcService.getContentItemList(param);
|
|
|
- if (longArticleSystemContentVO == null || CollectionUtils.isEmpty(longArticleSystemContentVO.getContentItemList())) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- log.info("longArticleSystemContentVO totalCount={}", longArticleSystemContentVO.getTotalCount());
|
|
|
- for (ContentItemVO contentItemVO : longArticleSystemContentVO.getContentItemList()) {
|
|
|
- MatchContent matchContent = new MatchContent();
|
|
|
- matchContent.setSourceId(contentItemVO.getSourceId());
|
|
|
- matchContent.setGhId(planAccount.getGhId());
|
|
|
- matchContent.setPublishContentId(contentItemVO.getPublishContentId());
|
|
|
- matchContent.setAccountName(planAccount.getAccountName());
|
|
|
- matchContent.setContent(contentItemVO.getContent());
|
|
|
- matchContent.setTitle(contentItemVO.getTitle());
|
|
|
- matchContent.setFlowPoolLevelTag(contentItemVO.getFlowPoolLevelTag());
|
|
|
- try {
|
|
|
- queue.put(matchContent);
|
|
|
- } catch (InterruptedException e) {
|
|
|
- throw new RuntimeException(e);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }).start();
|
|
|
-
|
|
|
-
|
|
|
+ public void matchContent() throws InterruptedException {
|
|
|
if (matchPoolExecutor.getCorePoolSize() - matchPoolExecutor.getActiveCount() > 0) {
|
|
|
int threadSize = matchPoolExecutor.getCorePoolSize() - matchPoolExecutor.getActiveCount();
|
|
|
+ log.info("threadNum={}", threadSize);
|
|
|
+ CountDownLatch countDownLatch = new CountDownLatch(threadSize);
|
|
|
// 启动消费者线程
|
|
|
for (int i = 0; i < threadSize; i++) {
|
|
|
matchPoolExecutor.submit(new Thread(() -> {
|
|
|
log.info("启动匹配小程序线程");
|
|
|
while (true) {
|
|
|
try {
|
|
|
- // 超过 10 分钟没有数据,销毁当前线程
|
|
|
- MatchContent matchContent = queue.poll(5, TimeUnit.MINUTES); // 等待最多 5 分钟
|
|
|
+ // 超过 5 分钟没有数据,销毁当前线程
|
|
|
+ MatchContent matchContent = matchQueue.poll(5, TimeUnit.MINUTES); // 等待最多 5 分钟
|
|
|
if (matchContent == null) {
|
|
|
break; // 退出当前线程
|
|
|
}
|
|
@@ -270,11 +238,41 @@ public class CoreServiceImpl implements CoreService {
|
|
|
}
|
|
|
}
|
|
|
log.info("启动匹配小程序线程结束");
|
|
|
+ countDownLatch.countDown();
|
|
|
}));
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
+ List<PlanAccount> matchPlanAccounts = planAccountService.getMatchPlanAccount();
|
|
|
+ if (CollectionUtils.isEmpty(matchPlanAccounts)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ for (PlanAccount planAccount : matchPlanAccounts) {
|
|
|
+ GetContentsParam param = new GetContentsParam();
|
|
|
+ param.setAccountId(planAccount.getAccountId());
|
|
|
+ param.setPlanId(planAccount.getPlanId());
|
|
|
+ LongArticleSystemContentVO longArticleSystemContentVO = aigcService.getContentItemList(param);
|
|
|
+ if (longArticleSystemContentVO == null || CollectionUtils.isEmpty(longArticleSystemContentVO.getContentItemList())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ log.info("longArticleSystemContentVO totalCount={}", longArticleSystemContentVO.getTotalCount());
|
|
|
+ for (ContentItemVO contentItemVO : longArticleSystemContentVO.getContentItemList()) {
|
|
|
+ MatchContent matchContent = new MatchContent();
|
|
|
+ matchContent.setSourceId(contentItemVO.getSourceId());
|
|
|
+ matchContent.setGhId(planAccount.getGhId());
|
|
|
+ matchContent.setPublishContentId(contentItemVO.getPublishContentId());
|
|
|
+ matchContent.setAccountName(planAccount.getAccountName());
|
|
|
+ matchContent.setContent(contentItemVO.getContent());
|
|
|
+ matchContent.setTitle(contentItemVO.getTitle());
|
|
|
+ matchContent.setFlowPoolLevelTag(contentItemVO.getFlowPoolLevelTag());
|
|
|
+ try {
|
|
|
+ matchQueue.put(matchContent);
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ countDownLatch.await();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
@@ -407,12 +405,11 @@ public class CoreServiceImpl implements CoreService {
|
|
|
|
|
|
|
|
|
@Override
|
|
|
- public void core(String param) throws InterruptedException {
|
|
|
-
|
|
|
+ public void core() throws InterruptedException {
|
|
|
if (corePoolExecutor.getCorePoolSize() - corePoolExecutor.getActiveCount() > 0) {
|
|
|
int threadSize = corePoolExecutor.getCorePoolSize() - corePoolExecutor.getActiveCount();
|
|
|
log.info("threadNum={}", threadSize);
|
|
|
- CountDownLatch latch = new CountDownLatch(threadSize);
|
|
|
+ CountDownLatch countDownLatch = new CountDownLatch(threadSize);
|
|
|
// 启动消费者线程
|
|
|
for (int i = 0; i < threadSize; i++) {
|
|
|
corePoolExecutor.submit(new Thread(() -> {
|
|
@@ -420,7 +417,7 @@ public class CoreServiceImpl implements CoreService {
|
|
|
while (true) {
|
|
|
try {
|
|
|
// 超过 5 分钟没有数据,销毁当前线程
|
|
|
- PlanAccount planAccount = queue1.poll(5, TimeUnit.MINUTES); // 等待最多 5 分钟
|
|
|
+ PlanAccount planAccount = coreQueue.poll(5, TimeUnit.MINUTES); // 等待最多 5 分钟
|
|
|
if (planAccount == null) {
|
|
|
break; // 退出当前线程
|
|
|
}
|
|
@@ -430,30 +427,22 @@ public class CoreServiceImpl implements CoreService {
|
|
|
}
|
|
|
}
|
|
|
log.info("核心操作线程结束");
|
|
|
- latch.countDown();
|
|
|
+ countDownLatch.countDown();
|
|
|
}));
|
|
|
}
|
|
|
List<PlanAccount> planAccounts;
|
|
|
- if (StringUtils.isEmpty(param)) {
|
|
|
- planAccounts = planAccountService.getNormalPlanAccount();
|
|
|
- } else {
|
|
|
- planAccounts = planAccountService.getPlanAccount(param);
|
|
|
- }
|
|
|
+ planAccounts = planAccountService.getNormalPlanAccount();
|
|
|
if (CollectionUtils.isEmpty(planAccounts)) {
|
|
|
return;
|
|
|
}
|
|
|
for (PlanAccount planAccount : planAccounts) {
|
|
|
- boolean flag = checkPlanAccount(planAccount);
|
|
|
- if (!flag && StringUtils.isEmpty(param)) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- queue1.put(planAccount);
|
|
|
+ coreQueue.put(planAccount);
|
|
|
}
|
|
|
- latch.await();
|
|
|
+ countDownLatch.await();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void operatePlanAccount(PlanAccount planAccount) {
|
|
|
+ public void operatePlanAccount(PlanAccount planAccount) {
|
|
|
boolean flag = checkPlanAccount(planAccount);
|
|
|
if (!flag) {
|
|
|
return;
|