@Override public Future<WriteResponse> write(final Batch<Object> batch, @Nullable WriteCallback callback) { Pair<BulkRequest, FutureCallbackHolder> preparedBatch = this.prepareBatch(batch, callback); try { client.bulkAsync(preparedBatch.getFirst(), preparedBatch.getSecond().getActionListener()); return preparedBatch.getSecond().getFuture(); } catch (Exception e) { throw new RuntimeException("Caught unexpected exception while calling bulkAsync API", e); } }
(request, bulkListener) -> client.bulkAsync(request, bulkListener);
@Override public void start() throws IOException { if (client != null) { // The client has already been initialized. Let's skip this again return; } try { // Create an elasticsearch client client = new RestHighLevelClient(buildRestClient(settings.getElasticsearch())); checkVersion(); logger.info("Elasticsearch Client for version {}.x connected to a node running version {}", compatibleVersion(), getVersion()); } catch (Exception e) { logger.warn("failed to create elasticsearch client, disabling crawler..."); throw e; } if (settings.getElasticsearch().getPipeline() != null) { // Check that the pipeline exists if (!isExistingPipeline(settings.getElasticsearch().getPipeline())) { throw new RuntimeException("You defined pipeline:" + settings.getElasticsearch().getPipeline() + ", but it does not exist."); } } BiConsumer<BulkRequest, ActionListener<BulkResponse>> bulkConsumer = (request, bulkListener) -> client.bulkAsync(request, RequestOptions.DEFAULT, bulkListener); bulkProcessor = BulkProcessor.builder(bulkConsumer, new DebugListener(logger)) .setBulkActions(settings.getElasticsearch().getBulkSize()) .setFlushInterval(TimeValue.timeValueMillis(settings.getElasticsearch().getFlushInterval().millis())) .setBulkSize(new ByteSizeValue(settings.getElasticsearch().getByteSize().getBytes())) .build(); }
@Override public void start() throws IOException { if (client != null) { // The client has already been initialized. Let's skip this again return; } try { // Create an elasticsearch client client = new RestHighLevelClient(buildRestClient(settings.getElasticsearch())); checkVersion(); logger.info("Elasticsearch Client for version {}.x connected to a node running version {}", compatibleVersion(), getVersion()); } catch (Exception e) { logger.warn("failed to create elasticsearch client, disabling crawler..."); throw e; } if (settings.getElasticsearch().getPipeline() != null) { // Check that the pipeline exists if (!isExistingPipeline(settings.getElasticsearch().getPipeline())) { throw new RuntimeException("You defined pipeline:" + settings.getElasticsearch().getPipeline() + ", but it does not exist."); } } BiConsumer<BulkRequest, ActionListener<BulkResponse>> bulkConsumer = (request, bulkListener) -> client.bulkAsync(request, RequestOptions.DEFAULT, bulkListener); bulkProcessor = BulkProcessor.builder(bulkConsumer, new DebugListener(logger)) .setBulkActions(settings.getElasticsearch().getBulkSize()) .setFlushInterval(TimeValue.timeValueMillis(settings.getElasticsearch().getFlushInterval().millis())) .setBulkSize(new ByteSizeValue(settings.getElasticsearch().getByteSize().getBytes())) .build(); }
@Override public BulkProcessor.Builder bulkProcessorBuilder(BulkProcessor.Listener bulkListener) { return BulkProcessor.builder((request, listener) -> client.bulkAsync(request, RequestOptions.DEFAULT, listener), bulkListener); }
@Override() public void bulkAsync(BulkRequest bulkRequest, RequestOptions options, Handler<AsyncResult<BulkResponse>> handler) { Context context = vertx.getOrCreateContext(); delegate.bulkAsync(bulkRequest, options, new ActionListener<BulkResponse>() { @Override public void onResponse(BulkResponse value) { context.runOnContext(v -> handler.handle(Future.succeededFuture(value))); } @Override public void onFailure(Exception e) { context.runOnContext(v -> handler.handle(Future.failedFuture(e))); } }); }
@Override public Future<WriteResponse> write(final Batch<Object> batch, @Nullable WriteCallback callback) { Pair<BulkRequest, FutureCallbackHolder> preparedBatch = this.prepareBatch(batch, callback); try { client.bulkAsync(preparedBatch.getFirst(), preparedBatch.getSecond().getActionListener()); return preparedBatch.getSecond().getFuture(); } catch (Exception e) { throw new RuntimeException("Caught unexpected exception while calling bulkAsync API", e); } }
private BulkProcessor build(final RestHighLevelClient client) { logger.trace("Bulk processor name: [{}] bulkActions: [{}], bulkSize: [{}], flush interval time: [{}]," + " concurrent Request: [{}], backoffPolicyTimeInterval: [{}], backoffPolicyRetries: [{}] ", new Object[]{bulkProcessorName, bulkActions, bulkSize, flushIntervalTime, concurrentRequest, backoffPolicyTimeInterval, backoffPolicyRetries}); BiConsumer<BulkRequest, ActionListener<BulkResponse>> bulkConsumer = (request, bulkListener) -> client .bulkAsync(request, RequestOptions.DEFAULT, bulkListener); return BulkProcessor.builder(bulkConsumer, getListener()) .setBulkActions(bulkActions) .setBulkSize(bulkSize) .setFlushInterval(flushIntervalTime) .setConcurrentRequests(concurrentRequest) .setBackoffPolicy(BackoffPolicy.exponentialBackoff( Util.getTimeValue(backoffPolicyTimeInterval, DEFAULT_ES_BACKOFF_POLICY_START_DELAY), backoffPolicyRetries)) .build(); }
(request, bulkListener) -> client.bulkAsync(request, bulkListener);