|
|
|
@ -58,7 +58,7 @@ public abstract class QueueTransferTask {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private int usage = 1;
|
|
|
|
|
private volatile int usage = 1;
|
|
|
|
|
private final AtomicReference<TimeoutTask> lastTimeout = new AtomicReference<TimeoutTask>();
|
|
|
|
|
private final ServiceManager serviceManager;
|
|
|
|
|
|
|
|
|
@ -99,14 +99,23 @@ public abstract class QueueTransferTask {
|
|
|
|
|
public void stop() {
|
|
|
|
|
RTopic schedulerTopic = getTopic();
|
|
|
|
|
schedulerTopic.removeListener(messageListenerId, statusListenerId);
|
|
|
|
|
|
|
|
|
|
TimeoutTask oldTimeout = lastTimeout.get();
|
|
|
|
|
if (oldTimeout != null) {
|
|
|
|
|
oldTimeout.getTask().cancel();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void scheduleTask(final Long startTime) {
|
|
|
|
|
TimeoutTask oldTimeout = lastTimeout.get();
|
|
|
|
|
if (usage == 0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (startTime == null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TimeoutTask oldTimeout = lastTimeout.get();
|
|
|
|
|
if (oldTimeout != null) {
|
|
|
|
|
oldTimeout.getTask().cancel();
|
|
|
|
|
}
|
|
|
|
@ -137,6 +146,10 @@ public abstract class QueueTransferTask {
|
|
|
|
|
protected abstract RFuture<Long> pushTaskAsync();
|
|
|
|
|
|
|
|
|
|
private void pushTask() {
|
|
|
|
|
if (usage == 0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
RFuture<Long> startTimeFuture = pushTaskAsync();
|
|
|
|
|
startTimeFuture.whenComplete((res, e) -> {
|
|
|
|
|
if (e != null) {
|
|
|
|
|