SLING-12288 - Allow configuration of timeouts for SubscriberReady check (#139)

diff --git a/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/DistributionSubscriber.java b/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/DistributionSubscriber.java
index 170eeb0..f9fc84f 100644
--- a/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/DistributionSubscriber.java
+++ b/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/DistributionSubscriber.java
@@ -169,7 +169,6 @@
         requireNonNull(precondition);
         requireNonNull(bookKeeperFactory);
 
-        long idleMillies = getLong(properties, SubscriberReady.DEFAULT_IDLE_TIME_MILLIS);
         if (config.editable()) {
             commandPoller = new CommandPoller(messagingProvider, topics, subSlingId, subAgentName, delay::signal);
         }
@@ -177,7 +176,7 @@
         if (config.subscriberIdleCheck()) {
             AtomicBoolean readyHolder = subscriberReadyStore.getReadyHolder(subAgentName);
 
-            idleCheck = new SubscriberReady(subAgentName, idleMillies, SubscriberReady.DEFAULT_FORCE_IDLE_MILLIS, readyHolder, System::currentTimeMillis);
+            idleCheck = new SubscriberReady(subAgentName, config.idleMillies(), config.forceReadyMillies(), readyHolder, System::currentTimeMillis);
             idleReadyCheck = new SubscriberIdleCheck(context, idleCheck);
         } else {
             idleCheck = new NoopIdle();
@@ -218,10 +217,6 @@
                 queueNames, config.subscriberIdleCheck());
     }
 
-    private long getLong(Map<String, Object> properties, long defaultValue) {
-        return Long.parseLong(properties.getOrDefault("idleMillies", Long.valueOf(defaultValue)).toString());
-    }
-
     public static String escapeTopicName(URI messagingUri, String topicName) {
         return String.format("%s%s_%s",
                 messagingUri.getHost(),
diff --git a/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/SubscriberConfiguration.java b/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/SubscriberConfiguration.java
index fc2aa48..ca0fb65 100644
--- a/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/SubscriberConfiguration.java
+++ b/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/SubscriberConfiguration.java
@@ -58,4 +58,10 @@
 
     @AttributeDefinition(name = "ContentPackageExtractor.overwritePrimaryTypesOfFolders", description = "The flag determines whether the primary node types of folders should be overwritten during content package extraction, with a default value of 'true'.")
     boolean contentPackageExtractorOverwritePrimaryTypesOfFolders() default true;
+    
+    @AttributeDefinition(description = "Number of ms being idle before reporting ready.")
+    int idleMillies() default 10 * 1000;
+    
+    @AttributeDefinition(description = "Number of ms to force subscriber reporting idle.")
+    int forceReadyMillies() default 300 * 1000;
 }
diff --git a/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/SubscriberReady.java b/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/SubscriberReady.java
index 0e8edd7..bb376da 100644
--- a/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/SubscriberReady.java
+++ b/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/SubscriberReady.java
@@ -20,7 +20,6 @@
 
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.concurrent.TimeUnit.MINUTES;
-import static java.util.concurrent.TimeUnit.SECONDS;
 
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
@@ -43,8 +42,6 @@
  * After becoming ready once, the check stays ready.
  */
 public class SubscriberReady implements IdleCheck {
-    public static final long DEFAULT_IDLE_TIME_MILLIS = SECONDS.toMillis(10);
-    public static final long DEFAULT_FORCE_IDLE_MILLIS = MINUTES.toMillis(5);
     public static final long ACCEPTABLE_AGE_DIFF_MS = MINUTES.toMillis(2);
     public static final int MAX_RETRIES = 10;