mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
use dropwizard built-in executor service facilities
This commit is contained in:
@@ -10,11 +10,10 @@ import lombok.RequiredArgsConstructor;
|
||||
|
||||
import com.commafeed.CommaFeedConfiguration;
|
||||
import com.commafeed.backend.service.DatabaseCleaningService;
|
||||
import com.commafeed.backend.task.SchedulingService.ScheduledTask;
|
||||
|
||||
@RequiredArgsConstructor(onConstructor = @__({ @Inject }))
|
||||
@Singleton
|
||||
public class OldStatusesCleanupTask implements ScheduledTask {
|
||||
public class OldStatusesCleanupTask extends ScheduledTask {
|
||||
|
||||
private final CommaFeedConfiguration config;
|
||||
private final DatabaseCleaningService cleaner;
|
||||
|
||||
@@ -8,11 +8,10 @@ import javax.inject.Singleton;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import com.commafeed.backend.service.DatabaseCleaningService;
|
||||
import com.commafeed.backend.task.SchedulingService.ScheduledTask;
|
||||
|
||||
@RequiredArgsConstructor(onConstructor = @__({ @Inject }))
|
||||
@Singleton
|
||||
public class OrphansCleanupTask implements ScheduledTask {
|
||||
public class OrphansCleanupTask extends ScheduledTask {
|
||||
|
||||
private final DatabaseCleaningService cleaner;
|
||||
|
||||
|
||||
32
src/main/java/com/commafeed/backend/task/ScheduledTask.java
Normal file
32
src/main/java/com/commafeed/backend/task/ScheduledTask.java
Normal file
@@ -0,0 +1,32 @@
|
||||
package com.commafeed.backend.task;
|
||||
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public abstract class ScheduledTask {
|
||||
protected abstract void run();
|
||||
|
||||
protected abstract long getInitialDelay();
|
||||
|
||||
protected abstract long getPeriod();
|
||||
|
||||
protected abstract TimeUnit getTimeUnit();
|
||||
|
||||
public void register(ScheduledExecutorService executor) {
|
||||
Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
ScheduledTask.this.run();
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
};
|
||||
executor.scheduleWithFixedDelay(runnable, getInitialDelay(), getPeriod(), getTimeUnit());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
package com.commafeed.backend.task;
|
||||
|
||||
import io.dropwizard.lifecycle.Managed;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
@Slf4j
|
||||
public class SchedulingService implements Managed {
|
||||
|
||||
public static interface ScheduledTask {
|
||||
void run();
|
||||
|
||||
long getInitialDelay();
|
||||
|
||||
long getPeriod();
|
||||
|
||||
TimeUnit getTimeUnit();
|
||||
}
|
||||
|
||||
private List<ScheduledTask> tasks = Lists.newArrayList();
|
||||
private ScheduledExecutorService executor;
|
||||
|
||||
@Override
|
||||
public void start() throws Exception {
|
||||
executor = Executors.newScheduledThreadPool(tasks.size());
|
||||
for (final ScheduledTask task : tasks) {
|
||||
Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
task.run();
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
};
|
||||
executor.scheduleWithFixedDelay(runnable, task.getInitialDelay(), task.getPeriod(), task.getTimeUnit());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() throws Exception {
|
||||
executor.shutdown();
|
||||
}
|
||||
|
||||
public void register(ScheduledTask task) {
|
||||
tasks.add(task);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user