diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/TtlScheduler.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/TtlScheduler.java index 78cab588..b46976b7 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/TtlScheduler.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/TtlScheduler.java @@ -57,7 +57,10 @@ public class TtlScheduler { ScheduledFuture task = scheduler.scheduleAtFixedRate(new ConsulHeartbeatTask( service.getId()), configuration.computeHearbeatInterval() .toStandardDuration().getMillis()); - serviceHeartbeats.put(service.getId(), task); + ScheduledFuture previousTask = serviceHeartbeats.put(service.getId(), task); + if (previousTask != null) { + previousTask.cancel(true); + } } public void remove(String serviceId) {