Make SpinPolicy configurable in DisruptorBlockingQueueFactory
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/68e8ecb8 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/68e8ecb8 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/68e8ecb8 Branch: refs/heads/master Commit: 68e8ecb810adf46819b7181b45512a111cfd32b4 Parents: c2d75fa Author: Matt Sicker <boa...@gmail.com> Authored: Fri Jun 17 19:07:59 2016 -0500 Committer: Matt Sicker <boa...@gmail.com> Committed: Fri Jun 17 19:07:59 2016 -0500 ---------------------------------------------------------------------- .../core/async/DisruptorBlockingQueueFactory.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/68e8ecb8/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorBlockingQueueFactory.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorBlockingQueueFactory.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorBlockingQueueFactory.java index add375d..9b85ae6 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorBlockingQueueFactory.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorBlockingQueueFactory.java @@ -3,8 +3,10 @@ package org.apache.logging.log4j.core.async; import java.util.concurrent.BlockingQueue; import com.conversantmedia.util.concurrent.DisruptorBlockingQueue; +import com.conversantmedia.util.concurrent.SpinPolicy; import org.apache.logging.log4j.core.config.Node; import org.apache.logging.log4j.core.config.plugins.Plugin; +import org.apache.logging.log4j.core.config.plugins.PluginAttribute; import org.apache.logging.log4j.core.config.plugins.PluginFactory; /** @@ -14,13 +16,22 @@ import org.apache.logging.log4j.core.config.plugins.PluginFactory; */ @Plugin(name = "DisruptorBlockingQueue", category = Node.CATEGORY, elementType = BlockingQueueFactory.ELEMENT_TYPE) public class DisruptorBlockingQueueFactory<E> implements BlockingQueueFactory<E> { + + private final SpinPolicy spinPolicy; + + private DisruptorBlockingQueueFactory(final SpinPolicy spinPolicy) { + this.spinPolicy = spinPolicy; + } + @Override public BlockingQueue<E> create(int capacity) { - return new DisruptorBlockingQueue<>(capacity); + return new DisruptorBlockingQueue<>(capacity, spinPolicy); } @PluginFactory - public static <E> DisruptorBlockingQueueFactory<E> createFactory() { - return new DisruptorBlockingQueueFactory<>(); + public static <E> DisruptorBlockingQueueFactory<E> createFactory( + @PluginAttribute(value = "SpinPolicy", defaultString = "WAITING") final SpinPolicy spinPolicy + ) { + return new DisruptorBlockingQueueFactory<>(spinPolicy); } }