我正试图实现一个轮询机制。我想根据一些条件增加或减少轮询间隔。我使用mono.repeat with delayElements来执行带有间隔的重复任务。但我无法根据一些条件找到修改延迟的方法。
Mono.just(1).
repeat().
delayElements(getPollingInterval()).
takeUntil((s)->
{
if(checkForEndCriteria()){
log.info("Critera to end reached);
return true;
}
return false;
}).
log().
subscribeOn(Schedulers.boundedElastic()).
flatMapSequential(x -> {
List<Event> eventList = getEvents(id, lastItemTimeStamp);;
if (!eventList.isEmpty()) {
//Recieving events now. So want to decrease the interval.
return Flux.fromIterable(eventList);
} else {
//There are no events happening .So I would like
//to increase the delay of repeat task by 1 sec
return Flux.just(buildHeartBeatEvent());
}
}).
onErrorResume(error -> {
log.error("Error occurred", error);
return Flux.error(error);
});```
我使用流量实现了这一点。
:
Flux
.<Duration>generate(sink -> {
Date date = [NEXT_DATE];
if (date != null) {
long millis = date.getTime() - System.currentTimeMillis();
sink.next(Duration.ofMillis(millis));
}
else {
sink.complete();
}
})
.concatMap(duration ->
Mono.delay(duration)
...
)
.repeat();
因此,每次回到generate()
时,repeat()
都可以查看某个状态,以获得下一次执行date
。
本文向大家介绍PHP定时任务延缓执行的实现,包括了PHP定时任务延缓执行的实现的使用技巧和注意事项,需要的朋友参考一下
问题内容: 如何控制/限制提交给的任务?我已经发送了SMS消息,并且我需要控制执行程序,以便它最多只能以每秒N条消息的速度发送。 问题答案: 假设您为每个任务创建一条SMS消息,则可以使用ScheduleExecutorService。 将任务添加到队列中,它们将以每秒10个的速度处理。
我正在使用sping-boot,我有这样一个用例,我想将列表的每个元素提交给执行器服务(线程池大小=4)。但是在每个必须处理的元素之间,我想要1秒钟的延迟。 Thread.sleep(1000)不工作,因为执行程序一睡觉就启动另一个线程。 编辑:这是我的process()方法,我在最后尝试使用sleep,但没有成功。
我有一个Gradle项目,它有来自不同存储库的大量依赖项(,)。在成功执行任务并检查zip存档后,我发现在文件夹中复制了某些JAR: bcprov-jdk14-1.38。jar和bcprov-jdk14-138。罐子 bcmail-jdk14-1.38。jar和bcmail-jdk14-138。罐子 Jar元组具有相同的大小和内容。我想这是因为在不同的存储库中,这些依赖项具有不同的文件名。当执行任
我在“React-Native Run-Android”上面临这个问题。我没有工作我的代码大约2个月。今天,我不得不做一些改变。但我不能在模拟器上运行。 Android/Build.Gradle
我有一个包含许多JSON文件的文件夹,我希望使用JMeter将它们并行发送到Webservice。 我已经使用BeanShell采样器将文件收集到JMeter-variables中。然后我使用了一个ForEach控制器来执行HTTP请求(参见此线程)。 但问题是,当使用线程计数>1时,JSON文件会被多次处理。每个线程循环访问自己的JSON文件列表。 您知道多个线程如何共享ForEach控制器的输