Package org.nuxeo.lib.stream.log
Class UnifiedLogManager
java.lang.Object
org.nuxeo.lib.stream.log.UnifiedLogManager
- All Implemented Interfaces:
AutoCloseable,LogManager
- Since:
- 11.1
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected LogConfigprotected LogManagerprotected LogManagerprotected Map<LogConfig, LogManager> protected LogManager -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()booleancreateIfNotExists(Name name, int size) Creates a new Log withsizepartitions if the Log does not exists.protected voidprotected void<M extends Externalizable>
LogTailer<M> createTailer(Name group, Collection<LogPartition> partitions, Codec<M> codec) Creates a tailer for a consumergroupand assign multiplepartitions.booleanTries to delete a Log.voidRemove all existing consumers and their committed positions.voiddeleteRecords(Name name) Delete all records of a stream by moving the first offsets to end of each partition.booleanReturnstrueif a Log with thisnameexists.protected void<M extends Externalizable>
LogAppender<M> getAppender(Name name, Codec<M> codec) Gets an appender for the Log namedname, usescodecto encode records.getLagPerPartition(Name name, Name group) Returns the lag between consumergroupand the producers for each partition.<M extends Externalizable>
List<Latency> getLatencyPerPartition(Name name, Name group, Codec<M> codec, Function<M, Long> timestampExtractor, Function<M, String> keyExtractor) Returns the lag with latency.protected LogManagergetManager(Name name) protected LogManagergetManager(Name name, Name group) Returns all the Log names.listConsumerGroups(Name name) List the consumer groups for a Log.intReturns the number of partition of a Log.<M extends Externalizable>
LogTailer<M> subscribe(Name group, Collection<Name> names, RebalanceListener listener, Codec<M> codec) Creates a tailer for a consumergroupand subscribe to multiple Logs.booleanbooleansupportSubscribe(Name stream) Returnstrueif theLogManager.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>)method is supported for the specific Log.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.nuxeo.lib.stream.log.LogManager
createIfNotExists, createTailer, createTailer, createTailer, createTailer, createTailer, createTailer, createTailer, createTailer, createTailer, createTailer, createTailer, delete, exists, getAppender, getAppender, getAppender, getLag, getLag, getLagPerPartition, getLatency, getLatency, getLatencyPerPartition, listAll, listConsumerGroups, size, subscribe, subscribe, subscribe
-
Field Details
-
configs
-
memManager
-
kafkaManager
-
defaultManager
-
defaultConfig
-
managers
-
-
Constructor Details
-
UnifiedLogManager
-
-
Method Details
-
createMemLogManager
protected void createMemLogManager() -
createKafkaLogManager
protected void createKafkaLogManager() -
findDefaultLogManger
protected void findDefaultLogManger() -
getManager
-
getManager
-
exists
Description copied from interface:LogManagerReturnstrueif a Log with thisnameexists.- Specified by:
existsin interfaceLogManager
-
createIfNotExists
Description copied from interface:LogManagerCreates a new Log withsizepartitions if the Log does not exists. Returns true it the Log has been created.- Specified by:
createIfNotExistsin interfaceLogManager
-
delete
Description copied from interface:LogManagerTries to delete a Log. Returns true if successfully deleted, might not be possible depending on the implementation.- Specified by:
deletein interfaceLogManager
-
size
Description copied from interface:LogManagerReturns the number of partition of a Log.- Specified by:
sizein interfaceLogManager
-
getAppender
Description copied from interface:LogManagerGets an appender for the Log namedname, usescodecto encode records. An appender is thread safe.- Specified by:
getAppenderin interfaceLogManager
-
createTailer
public <M extends Externalizable> LogTailer<M> createTailer(Name group, Collection<LogPartition> partitions, Codec<M> codec) Description copied from interface:LogManagerCreates a tailer for a consumergroupand assign multiplepartitions. Usescodecto decode records. Note thatpartitionscan be from different Logs. A tailer is NOT thread safe.- Specified by:
createTailerin interfaceLogManager
-
supportSubscribe
public boolean supportSubscribe()Description copied from interface:LogManagerReturnstrueif the LogLogManager.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>)method is supported. Now deprecated because some implementations support subscribe only on specific Log names.- Specified by:
supportSubscribein interfaceLogManager
-
supportSubscribe
Description copied from interface:LogManagerReturnstrueif theLogManager.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>)method is supported for the specific Log.- Specified by:
supportSubscribein interfaceLogManager
-
subscribe
public <M extends Externalizable> LogTailer<M> subscribe(Name group, Collection<Name> names, RebalanceListener listener, Codec<M> codec) Description copied from interface:LogManagerCreates a tailer for a consumergroupand subscribe to multiple Logs. The partitions assignment is done dynamically depending on the number of subscribers. The partitions can change during tailers life, this is called a rebalancing. A listener can be used to be notified on assignment changes. Usescodecto decode records.- Specified by:
subscribein interfaceLogManager
-
getLagPerPartition
Description copied from interface:LogManagerReturns the lag between consumergroupand the producers for each partition. The result list is ordered, for instance index 0 is lag for partition 0.- Specified by:
getLagPerPartitionin interfaceLogManager
-
getLatencyPerPartition
public <M extends Externalizable> List<Latency> getLatencyPerPartition(Name name, Name group, Codec<M> codec, Function<M, Long> timestampExtractor, Function<M, String> keyExtractor) Description copied from interface:LogManagerReturns the lag with latency. Timestamps used to compute the latencies are extracted from the records. This requires to read one record per partition so it costs more thanLogManager.getLagPerPartition(Name, Name).Two functions need to be provided to extract the timestamp and a key from a record.
- Specified by:
getLatencyPerPartitionin interfaceLogManager
-
listAllNames
Description copied from interface:LogManagerReturns all the Log names.- Specified by:
listAllNamesin interfaceLogManager
-
listConsumerGroups
Description copied from interface:LogManagerList the consumer groups for a Log.- Specified by:
listConsumerGroupsin interfaceLogManager
-
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceLogManager
-
deleteRecords
Description copied from interface:LogManagerDelete all records of a stream by moving the first offsets to end of each partition. Exposed for testing purpose, might not be implemented on all implementation.- Specified by:
deleteRecordsin interfaceLogManager
-
deleteConsumers
public void deleteConsumers()Description copied from interface:LogManagerRemove all existing consumers and their committed positions. Exposed for testing purpose, might not be implemented by all implementation.- Specified by:
deleteConsumersin interfaceLogManager
-