@Override
        public int consume(ConsumerFunction<E> consumer, int batchSize) {
            E e;
            int i=0;
            for(;i<batchSize;i++) {
                if((e = weakPoll()) == null){
                    break;
                }
                consumer.consume(e);
            }
            return i;
        }
The queue factory produces {@link ConcurrentQueue} instances based on a best fit to the {@link ConcurrentQueueSpec}.
This allows minimal dependencies between user code and the queue implementations and gives users a way to express
their requirements on a higher level.

@author nitsanw
jctools-experimental/src/main/java/org/jctools/queues/alt/ConcurrentQueueFactory.java