Class ChronicleLogTailer<M extends Externalizable>
- java.lang.Object
-
- org.nuxeo.lib.stream.log.chronicle.ChronicleLogTailer<M>
-
- All Implemented Interfaces:
AutoCloseable,LogTailer<M>
public class ChronicleLogTailer<M extends Externalizable> extends Object implements LogTailer<M>
- Since:
- 9.3
-
-
Field Summary
Fields Modifier and Type Field Description protected StringbasePathprotected booleanclosedprotected Codec<M>codecprotected net.openhft.chronicle.queue.ExcerptTailercqTailerprotected LogPartitionGroupidprotected booleaninitializedprotected ChronicleLogOffsetTrackeroffsetTrackerprotected LogPartitionpartitionprotected static longPOLL_INTERVAL_MSprotected ChronicleRetentionDurationretentionprotected static Set<LogPartitionGroup>tailersId
-
Constructor Summary
Constructors Constructor Description ChronicleLogTailer(Codec<M> codec, String basePath, net.openhft.chronicle.queue.ExcerptTailer cqTailer, LogPartition partition, Name group, ChronicleRetentionDuration retention)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Collection<LogPartition>assignments()Returns the list of Log name, partitions tuples currently assigned to this tailer.protected voidcheckInitialized()voidclose()booleanclosed()Returnstrueif the tailer has been closed.voidcommit()Commit current positions for all partitions (last message offset returned by read).LogOffsetcommit(LogPartition partition)Commit current position for the partition.Codec<M>getCodec()Returns the codec used to read the records.protected ChronicleLogOffsetTrackergetOffsetTracker()Namegroup()Returns the consumer group.LogOffsetoffsetForTimestamp(LogPartition partition, long timestamp)Look up the offset for the given partition by timestamp.protected LogRecord<M>read()LogRecord<M>read(Duration timeout)Read a message from assigned partitions within the timeout.protected voidregisterTailer()voidreset()Reset all committed positions for this group, next read will be done from beginning.voidreset(LogPartition partition)Reset the committed position for this group on this partition, next read for this partition will be done from the beginning.voidseek(LogOffset offset)Set the current position for a single partition.voidtoEnd()Set the current positions to the end of all partitions.voidtoLastCommitted()Set the current positions to previously committed positions.voidtoStart()Set the current positions to the beginning of all partitions.StringtoString()protected voidunregisterTailer()
-
-
-
Field Detail
-
POLL_INTERVAL_MS
protected static final long POLL_INTERVAL_MS
- See Also:
- Constant Field Values
-
tailersId
protected static final Set<LogPartitionGroup> tailersId
-
cqTailer
protected final net.openhft.chronicle.queue.ExcerptTailer cqTailer
-
offsetTracker
protected ChronicleLogOffsetTracker offsetTracker
-
retention
protected final ChronicleRetentionDuration retention
-
id
protected final LogPartitionGroup id
-
partition
protected final LogPartition partition
-
codec
protected final Codec<M extends Externalizable> codec
-
closed
protected volatile boolean closed
-
initialized
protected boolean initialized
-
-
Constructor Detail
-
ChronicleLogTailer
public ChronicleLogTailer(Codec<M> codec, String basePath, net.openhft.chronicle.queue.ExcerptTailer cqTailer, LogPartition partition, Name group, ChronicleRetentionDuration retention)
-
-
Method Detail
-
getOffsetTracker
protected ChronicleLogOffsetTracker getOffsetTracker()
-
registerTailer
protected void registerTailer()
-
checkInitialized
protected void checkInitialized()
-
unregisterTailer
protected void unregisterTailer()
-
read
public LogRecord<M> read(Duration timeout) throws InterruptedException
Description copied from interface:LogTailerRead a message from assigned partitions within the timeout.- Specified by:
readin interfaceLogTailer<M extends Externalizable>- Returns:
- null if there is no message in the queue after the timeout.
- Throws:
InterruptedException
-
commit
public LogOffset commit(LogPartition partition)
Description copied from interface:LogTailerCommit current position for the partition.- Specified by:
commitin interfaceLogTailer<M extends Externalizable>- Returns:
- the committed offset, can return null if there was no previous read done on this partition.
-
commit
public void commit()
Description copied from interface:LogTailerCommit current positions for all partitions (last message offset returned by read).- Specified by:
commitin interfaceLogTailer<M extends Externalizable>
-
toEnd
public void toEnd()
Description copied from interface:LogTailerSet the current positions to the end of all partitions.- Specified by:
toEndin interfaceLogTailer<M extends Externalizable>
-
toStart
public void toStart()
Description copied from interface:LogTailerSet the current positions to the beginning of all partitions.- Specified by:
toStartin interfaceLogTailer<M extends Externalizable>
-
toLastCommitted
public void toLastCommitted()
Description copied from interface:LogTailerSet the current positions to previously committed positions.- Specified by:
toLastCommittedin interfaceLogTailer<M extends Externalizable>
-
seek
public void seek(LogOffset offset)
Description copied from interface:LogTailerSet the current position for a single partition. Do not change other partitions positions.- Specified by:
seekin interfaceLogTailer<M extends Externalizable>
-
reset
public void reset()
Description copied from interface:LogTailerReset all committed positions for this group, next read will be done from beginning.- Specified by:
resetin interfaceLogTailer<M extends Externalizable>
-
reset
public void reset(LogPartition partition)
Description copied from interface:LogTailerReset the committed position for this group on this partition, next read for this partition will be done from the beginning.- Specified by:
resetin interfaceLogTailer<M extends Externalizable>
-
offsetForTimestamp
public LogOffset offsetForTimestamp(LogPartition partition, long timestamp)
Description copied from interface:LogTailerLook up the offset for the given partition by timestamp. The position is the earliest offset whose timestamp is greater than or equal to the given timestamp.The timestamp used depends on the implementation, for Kafka this is the LogAppendTime. Returns null if no record offset is found with an appropriate timestamp.
- Specified by:
offsetForTimestampin interfaceLogTailer<M extends Externalizable>
-
assignments
public Collection<LogPartition> assignments()
Description copied from interface:LogTailerReturns the list of Log name, partitions tuples currently assigned to this tailer. Assignments can change only if the tailer has been created usingLogManager.subscribe(org.nuxeo.lib.stream.log.Name, java.util.Collection<org.nuxeo.lib.stream.log.Name>, org.nuxeo.lib.stream.log.RebalanceListener, org.nuxeo.lib.stream.codec.Codec<M>).- Specified by:
assignmentsin interfaceLogTailer<M extends Externalizable>
-
group
public Name group()
Description copied from interface:LogTailerReturns the consumer group.- Specified by:
groupin interfaceLogTailer<M extends Externalizable>
-
close
public void close()
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceLogTailer<M extends Externalizable>
-
closed
public boolean closed()
Description copied from interface:LogTailerReturnstrueif the tailer has been closed.- Specified by:
closedin interfaceLogTailer<M extends Externalizable>
-
getCodec
public Codec<M> getCodec()
Description copied from interface:LogTailerReturns the codec used to read the records. A null codec is the default legacy encoding.- Specified by:
getCodecin interfaceLogTailer<M extends Externalizable>
-
-