微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Reactor Parallel Flux 在使用 blockLast() 进行迭代期间卡住

如何解决Reactor Parallel Flux 在使用 blockLast() 进行迭代期间卡住

我是 Reactor 的新手,我在 Spring Boot 应用程序中使用了 reactor 核心 3.4.6。 使用并行通量时,在迭代数组元素后,它在某个时刻无限期地卡住,没有抛出异常,我必须手动杀死它。我无法弄清楚我的代码有什么问题,或者我的方法错误的。下面是我的代码片段。

Flux.fromArray(tmsIDList)
                .parallel()
                .runOn(Schedulers.boundedElastic())
                .doOnNext(tmsID -> {
                    try {
                        long rowCount = 0;
                        FullLoadBatchLogEntity batchlogRecord =  createLogRecord(
                                batchDetails.getBatchId(),tmsID,"STARTED",Timestamp.valueOf(LocalDateTime.Now()),null,null
                        );
                        logger.info("Executing xxxxxxxxx-" + tmsID);
                        batchLoggerService.makeFullLoadBatchLogEntry(batchlogRecord);
                        executesql(tmsID);
                        rowCount = generateSome(tmsID);
                        uploadCSVToSFTP(tmsID,tmsCSV.get(tmsID));
                        batchlogRecord.setSTATUS("COMPLETED");
                        batchlogRecord.setEND_TIME(Timestamp.valueOf(LocalDateTime.Now()));
                        batchlogRecord.setROWS_AFFECTED(rowCount);
                        batchLoggerService.makeFullLoadBatchLogEntry(batchlogRecord);
                        logger.info("xxxxxxxxxyyyyyyyyyyy" + tmsID + " Completed!");
                       
                    } catch (Exception e) {
                        batchlogRecord.setSTATUS("Failed");
                        batchlogRecord.setEND_TIME(Timestamp.valueOf(LocalDateTime.Now()));
                        logger.error("uuuuuuuuuuutt" + tmsID + " Failed!");
                        e.printstacktrace();
                      
                    }
                })
                .sequential()
                .blockLast();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。