public void stop() { try { bulkProcessor.flush(flushTimeoutMs); } catch (Exception e) { log.warn("Failed to flush during stop", e); } bulkProcessor.stop(); bulkProcessor.awaitStop(flushTimeoutMs); }
public void write(Collection<SinkRecord> records) { for (SinkRecord sinkRecord : records) { final String indexOverride = topicToIndexMap.get(sinkRecord.topic()); final String index = indexOverride != null ? indexOverride : sinkRecord.topic(); final boolean ignoreKey = ignoreKeyTopics.contains(sinkRecord.topic()) || this.ignoreKey; final boolean ignoreSchema = ignoreSchemaTopics.contains(sinkRecord.topic()) || this.ignoreSchema; if (!ignoreSchema && !existingMappings.contains(index)) { try { if (Mapping.getMapping(client, index, type) == null) { Mapping.createMapping(client, index, type, sinkRecord.valueSchema()); } } catch (IOException e) { // FIXME: concurrent tasks could attempt to create the mapping and one of the requests may // fail throw new ConnectException("Failed to initialize mapping for index: " + index, e); } existingMappings.add(index); } final IndexableRecord indexableRecord = DataConverter.convertRecord(sinkRecord, index, type, ignoreKey, ignoreSchema); bulkProcessor.add(indexableRecord, flushTimeoutMs); } }
public void start() { bulkProcessor.start(); }
public void flush() { bulkProcessor.flush(flushTimeoutMs); }