Author: tommaso
Date: Mon Aug 1 13:33:57 2016
New Revision: 1754749
URL: http://svn.apache.org/viewvc?rev=1754749&view=rev
Log:
SLING-5933 - make it possible to configure async delivery in forward agent
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java?rev=1754749&r1=1754748&r2=1754749&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java
Mon Aug 1 13:33:57 2016
@@ -52,6 +52,7 @@ import org.apache.sling.distribution.que
import
org.apache.sling.distribution.queue.impl.AsyncDeliveryDispatchingStrategy;
import
org.apache.sling.distribution.queue.impl.DistributionQueueDispatchingStrategy;
import org.apache.sling.distribution.queue.impl.ErrorQueueDispatchingStrategy;
+import
org.apache.sling.distribution.queue.impl.MultipleQueueDispatchingStrategy;
import
org.apache.sling.distribution.queue.impl.PriorityQueueDispatchingStrategy;
import
org.apache.sling.distribution.queue.impl.jobhandling.JobHandlingDistributionQueueProvider;
import
org.apache.sling.distribution.queue.impl.simple.SimpleDistributionQueueProvider;
@@ -92,7 +93,6 @@ public class ForwardDistributionAgentFac
@Property(boolValue = true, label = "Enabled", description = "Whether or
not to start the distribution agent.")
private static final String ENABLED = "enabled";
-
@Property(label = "Service Name", description = "The name of the service
used to access the repository.")
private static final String SERVICE_NAME = "serviceName";
@@ -171,6 +171,9 @@ public class ForwardDistributionAgentFac
)
public static final String QUEUE_PROVIDER = "queue.provider";
+ @Property(boolValue = false, label = "Async delivery", description =
"Whether or not to use a separate delivery queue to maximize transport
throughput when queue has more than 100 items")
+ public static final String ASYNC_DELIVERY = "async.delivery";
+
@Reference
private Packaging packaging;
@@ -261,14 +264,19 @@ public class ForwardDistributionAgentFac
importerEndpointsMap =
SettingsUtils.expandUriMap(importerEndpointsMap, queueAliases);
exportQueueStrategy = dispatchingStrategy;
} else {
- // delivery queues' names
- Map<String, String> deliveryQueues = new HashMap<String, String>();
- for (String e : endpointNames) {
- deliveryQueues.put(e, "delivery-"+e);
+ boolean asyncDelivery =
PropertiesUtil.toBoolean(config.get(ASYNC_DELIVERY), false);
+ if (asyncDelivery) {
+ // delivery queues' names
+ Map<String, String> deliveryQueues = new HashMap<String,
String>();
+ for (String e : endpointNames) {
+ deliveryQueues.put(e, "delivery-" + e);
+ }
+
+ processingQueues.addAll(deliveryQueues.values());
+ exportQueueStrategy = new
AsyncDeliveryDispatchingStrategy(deliveryQueues);
+ } else {
+ exportQueueStrategy = new
MultipleQueueDispatchingStrategy(endpointNames.toArray(new
String[endpointNames.size()]));
}
-
- processingQueues.addAll(deliveryQueues.values());
- exportQueueStrategy = new
AsyncDeliveryDispatchingStrategy(deliveryQueues);
}
processingQueues.addAll(endpointNames);