Package org.nuxeo.lib.stream.log.kafka
Class KafkaLogAppender<M extends Externalizable>
java.lang.Object
org.nuxeo.lib.stream.log.kafka.KafkaLogAppender<M>
- All Implemented Interfaces:
AutoCloseable,CloseableLogAppender<M>,LogAppender<M>
public class KafkaLogAppender<M extends Externalizable>
extends Object
implements CloseableLogAppender<M>
Apache Kafka implementation of Log.
- Since:
- 9.3
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanprotected final Propertiesprotected final Nameprotected org.apache.kafka.clients.producer.KafkaProducer<String,org.apache.kafka.common.utils.Bytes> protected static final AtomicIntegerprotected final Propertiesprotected final NameResolverprotected final intprotected final ConcurrentLinkedQueue<KafkaLogTailer<M>>protected final String -
Method Summary
Modifier and TypeMethodDescriptionAppend a message into a partition, returnsLogOffsetposition of the message.Same asLogAppender.append(int, Externalizable), the queue is chosen using a hash of parameters "key".voidclose()booleanclosed()Returnstrueif the appender has been closed by the manager.getCodec()Returns the codec used to write record.getTopic()protected booleanisProcessed(Name group, org.apache.kafka.common.TopicPartition topicPartition, long offset) name()Returns the Log's name.static <M extends Externalizable>
KafkaLogAppender<M>open(Codec<M> codec, NameResolver resolver, Name name, Properties producerProperties, Properties consumerProperties) intsize()Returns the number of partitions in the Log.toString()booleanWait for consumer to process a message up to the offset.
-
Field Details
-
topic
-
consumerProps
-
producerProps
-
size
protected final int size -
tailers
-
name
-
codec
-
encodingCodec
-
resolver
-
producer
protected org.apache.kafka.clients.producer.KafkaProducer<String,org.apache.kafka.common.utils.Bytes> producer -
closed
protected boolean closed -
PRODUCER_CLIENT_ID_SEQUENCE
-
-
Method Details
-
open
public static <M extends Externalizable> KafkaLogAppender<M> open(Codec<M> codec, NameResolver resolver, Name name, Properties producerProperties, Properties consumerProperties) -
name
Description copied from interface:LogAppenderReturns the Log's name.- Specified by:
namein interfaceLogAppender<M extends Externalizable>
-
getTopic
-
size
public int size()Description copied from interface:LogAppenderReturns the number of partitions in the Log.- Specified by:
sizein interfaceLogAppender<M extends Externalizable>
-
append
Description copied from interface:LogAppenderSame asLogAppender.append(int, Externalizable), the queue is chosen using a hash of parameters "key".- Specified by:
appendin interfaceLogAppender<M extends Externalizable>
-
append
Description copied from interface:LogAppenderAppend a message into a partition, returnsLogOffsetposition of the message. This method is thread safe, a queue can be shared by multiple producers.- Specified by:
appendin interfaceLogAppender<M extends Externalizable>- Parameters:
partition- index lower thanLogAppender.size()
-
append
-
waitFor
Description copied from interface:LogAppenderWait for consumer to process a message up to the offset. The message is processed if a consumer of the group commits a greater or equals offset. Returntrueif the message has been consumed,falsein case of timeout.- Specified by:
waitForin interfaceLogAppender<M extends Externalizable>- Throws:
InterruptedException
-
closed
public boolean closed()Description copied from interface:LogAppenderReturnstrueif the appender has been closed by the manager.- Specified by:
closedin interfaceLogAppender<M extends Externalizable>
-
toString
-
getCodec
Description copied from interface:LogAppenderReturns the codec used to write record. A null codec is the default legacy encoding.- Specified by:
getCodecin interfaceLogAppender<M extends Externalizable>
-
isProcessed
protected boolean isProcessed(Name group, org.apache.kafka.common.TopicPartition topicPartition, long offset) -
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseableLogAppender<M extends Externalizable>
-