/** * Start only consumer */ private Future<E> startConsumer() { return consumer.map(consumer -> { return executorService.submit( () -> { logger.info("starting consumer thread"); preExecute(); try { E result = consumer.consume(queue); logger.info("Queue Consumption is done; notifying producer threads"); return result; } catch (Exception e) { logger.error("error consuming records", e); queue.markAsFailed(e); throw e; } }); }).orElse(CompletableFuture.completedFuture(null)); }
return completionService.submit(() -> { try { preExecute(); producer.produce(queue); } catch (Exception e) {