public class SingleChronicleQueue extends Object implements RollingChronicleQueue
| Modifier and Type | Field and Description |
|---|---|
static String |
DISK_SPACE_CHECKER_NAME |
protected net.openhft.chronicle.core.threads.EventLoop |
eventLoop |
protected TableStore<SCQMeta> |
metaStore |
static String |
QUEUE_METADATA_FILE |
protected int |
sourceId |
protected ThreadLocal<ExcerptAppender> |
strongExcerptAppenderThreadLocal |
static String |
SUFFIX |
protected ThreadLocal<WeakReference<ExcerptAppender>> |
weakExcerptAppenderThreadLocal |
TEST_BLOCK_SIZE| Modifier | Constructor and Description |
|---|---|
protected |
SingleChronicleQueue(SingleChronicleQueueBuilder builder) |
| Modifier and Type | Method and Description |
|---|---|
ExcerptAppender |
acquireAppender()
Returns a ExcerptAppender for this ChronicleQueue that is local to the current Thread.
|
<T> void |
addCloseListener(T key,
Consumer<T> closer) |
long |
blockSize() |
long |
bufferCapacity() |
boolean |
buffered() |
void |
clear()
Removes all the excerpts in the current ChronicleQueue.
|
void |
close() |
long |
countExcerpts(long fromIndex,
long toIndex)
Will give you the number of excerpts between 2 index?s ( as exists on the current file
system ).
|
ExcerptTailer |
createTailer()
Creates and returns a new ExcerptTailer for this ChronicleQueue.
|
ExcerptTailer |
createTailer(String id)
Creates and returns a new ExcerptTailer for this ChronicleQueue with the given unique
id. |
int |
cycle() |
int |
cycle(net.openhft.chronicle.core.time.TimeProvider timeProvider) |
protected CycleCalculator |
cycleCalculator(ZoneId zoneId) |
int |
deltaCheckpointInterval()
Returns the Delta Checkpoint Interval for this ChronicleQueue.
|
String |
dump()
Creates and returns a new String representation of this ChronicleQueue in YAML-format.
|
void |
dump(Writer writer,
long fromIndex,
long toIndex)
Dumps a representation of this ChronicleQueue to the provided
writer in YAML-format. |
String |
dumpLastHeader()
Creates and returns a new String representation of this ChronicleQueue's last header in YAML-format.
|
long |
entryCount()
Counts the number of messages in this queue instance.
|
long |
epoch() |
net.openhft.chronicle.core.threads.EventLoop |
eventLoop() |
long |
exceptsPerCycle(int cycle) |
File |
file()
Returns the base directory where ChronicleQueue stores its data.
|
String |
fileAbsolutePath()
Returns the absolute path of the base directory where ChronicleQueue stores its data.
|
protected int |
fileToCycle(File queueFile) |
int |
firstCycle() |
long |
firstIndex()
Returns the lowest valid index available for this ChronicleQueue, or
Long.MAX_VALUE
if no such index exists. |
int |
indexCount() |
int |
indexSpacing() |
boolean |
isClosed() |
long |
lastAcknowledgedIndexReplicated()
when using replication to another host, this is the highest last index that has been confirmed to
have been read by all of the remote host(s).
|
void |
lastAcknowledgedIndexReplicated(long newValue)
Sets the last index that has been sent to a remote host.
|
int |
lastCycle() |
long |
lastIndexReplicated()
when using replication to another host, this is the maxiumum last index that has been sent to any of the remote host(s).
|
void |
lastIndexReplicated(long indexReplicated)
Sets the last index that has been sent to a remote host.
|
NavigableSet<Long> |
listCyclesBetween(int lowerCycle,
int upperCycle) |
TableStore |
metaStore() |
protected ExcerptAppender |
newAppender() |
int |
nextCycle(int cycle,
TailerDirection direction)
the next available cycle, no cycle will be created by this method, this method is typically
used by a tailer to jump to the next cycle when the cycles are not adjacent.
|
Consumer<net.openhft.chronicle.bytes.BytesRingBufferStats> |
onRingBufferStats() |
long |
overlapSize() |
QueueLock |
queueLock() |
void |
refreshDirectlyListing()
Refreshed this ChronicleQueue's view of the directory used for storing files.
|
void |
release(CommonStore store) |
RollCycle |
rollCycle()
Returns the
RollCycle for this ChronicleQueue. |
int |
sourceId()
Returns the source id.
|
protected StoreFileListener |
storeFileListener() |
WireStore |
storeForCycle(int cycle,
long epoch,
boolean createIfAbsent) |
net.openhft.chronicle.core.time.TimeProvider |
time()
Returns the
TimeProvider for this ChronicleQueue. |
String |
toString() |
net.openhft.chronicle.wire.WireType |
wireType()
Returns the
WireType used for this ChronicleQueue. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitcreateAppender, dump, methodWriter, methodWriterBuilder, single, singleBuilder, singleBuilder, singleBuilder, singleBuilderpublic static final String SUFFIX
public static final String QUEUE_METADATA_FILE
public static final String DISK_SPACE_CHECKER_NAME
protected final ThreadLocal<WeakReference<ExcerptAppender>> weakExcerptAppenderThreadLocal
protected final ThreadLocal<ExcerptAppender> strongExcerptAppenderThreadLocal
@NotNull protected final net.openhft.chronicle.core.threads.EventLoop eventLoop
@NotNull protected final TableStore<SCQMeta> metaStore
protected int sourceId
protected SingleChronicleQueue(@NotNull
SingleChronicleQueueBuilder builder)
protected CycleCalculator cycleCalculator(ZoneId zoneId)
public int sourceId()
ChronicleQueueThe source id is non-negative.
sourceId in interface ChronicleQueuepublic long lastAcknowledgedIndexReplicated()
lastAcknowledgedIndexReplicated in interface ChronicleQueuepublic void lastAcknowledgedIndexReplicated(long newValue)
ChronicleQueuelastAcknowledgedIndexReplicated in interface ChronicleQueuenewValue - last acknowledged index that has been sent to the remote host(s).ChronicleQueue.lastAcknowledgedIndexReplicated()public void refreshDirectlyListing()
ChronicleQueueInvoke this method if you delete file from a chronicle-queue directory
The problem solved by this is that we cache the structure of the queue directory in order to reduce file system adds latency. Calling this method, after deleting .cq4 files, will update the internal caches accordingly,
refreshDirectlyListing in interface ChronicleQueuepublic long lastIndexReplicated()
lastIndexReplicated in interface ChronicleQueuepublic void lastIndexReplicated(long indexReplicated)
ChronicleQueuelastIndexReplicated in interface ChronicleQueueindexReplicated - last index that has been sent to the remote host.ChronicleQueue.lastIndexReplicated()public void clear()
ChronicleQueueclear in interface ChronicleQueue@NotNull public File file()
ChronicleQueuefile in interface ChronicleQueue@NotNull public String fileAbsolutePath()
ChronicleQueueThis value might be cached, as getAbsolutePath is expensive
fileAbsolutePath in interface ChronicleQueuepublic String dumpLastHeader()
ChronicleQueuedumpLastHeader in interface ChronicleQueue@NotNull public String dump()
ChronicleQueuedump in interface ChronicleQueuepublic void dump(@NotNull
Writer writer,
long fromIndex,
long toIndex)
ChronicleQueuewriter in YAML-format.
Dumping will be made from the provided (@code fromIndex) (inclusive) to the provided
toIndex (inclusive).dump in interface ChronicleQueuewriter - to write tofromIndex - first index (inclusive)toIndex - last index (inclusive)public int indexCount()
indexCount in interface RollingChronicleQueuepublic int indexSpacing()
indexSpacing in interface RollingChronicleQueuepublic long epoch()
epoch in interface RollingChronicleQueue@NotNull public RollCycle rollCycle()
ChronicleQueueRollCycle for this ChronicleQueue.rollCycle in interface ChronicleQueuerollCycle in interface RollingChronicleQueueRollCycle for this ChronicleQueueRollCyclepublic int deltaCheckpointInterval()
ChronicleQueueThe value returned is always a power of two.
deltaCheckpointInterval in interface ChronicleQueuedeltaCheckpointInterval in interface RollingChronicleQueuepublic boolean buffered()
@NotNull public net.openhft.chronicle.core.threads.EventLoop eventLoop()
@NotNull protected ExcerptAppender newAppender()
protected StoreFileListener storeFileListener()
@NotNull public ExcerptAppender acquireAppender()
ChronicleQueueAn Appender can be used to store new excerpts sequentially to the queue.
Appenders are NOT thread-safe. Sharing an Appender across threads will lead to errors and unpredictable behaviour.
This method returns a ThreadLocal appender, so does not produce any garbage, hence it's safe to simply call
this method every time an appender is needed.
acquireAppender in interface ChronicleQueue@NotNull public QueueLock queueLock()
queueLock in interface RollingChronicleQueue@NotNull public ExcerptTailer createTailer(String id)
ChronicleQueueid.
The id is used to persistently store the latest index for the trailer. Any new Trailer with a previously used id will continue where the old one left off. Tailers are NOT thread-safe. Sharing a Tailer across threads will lead to errors and unpredictable behaviour.
If the provided id is null, the Trailer will be unnamed and this is
equivalent to invoking ChronicleQueue.createTailer().
createTailer in interface ChronicleQueueid - unique id for a tailer which uses to track where it was up toidChronicleQueue.createTailer()@NotNull public ExcerptTailer createTailer()
ChronicleQueuecreateTailer in interface ChronicleQueueChronicleQueue.createTailer(String)@Nullable public final WireStore storeForCycle(int cycle, long epoch, boolean createIfAbsent)
storeForCycle in interface RollingChronicleQueuecycle - the cycleepoch - an epoch offset as the number of number of milliseconds since January
1, 1970, 00:00:00 GMTcreateIfAbsent - create missing stores if true, or return null if missingWireStore associated with this cycle, or null if !createIfAbsent
is false and absentpublic int nextCycle(int cycle,
@NotNull
TailerDirection direction)
throws ParseException
RollingChronicleQueuenextCycle in interface RollingChronicleQueuecycle - the current cycledirection - the directionParseExceptionpublic long exceptsPerCycle(int cycle)
public long countExcerpts(long fromIndex,
long toIndex)
throws IllegalStateException
countExcerpts in interface RollingChronicleQueuefromIndex - the lower indextoIndex - the higher indexIllegalStateException - if we are not able to read the chronicle filespublic NavigableSet<Long> listCyclesBetween(int lowerCycle, int upperCycle) throws ParseException
ParseExceptionpublic <T> void addCloseListener(T key,
Consumer<T> closer)
public boolean isClosed()
public void close()
close in interface Closeableclose in interface AutoCloseablepublic final void release(@Nullable
CommonStore store)
release in interface StoreReleasablestore - the store to releasepublic final int cycle()
cycle in interface RollingChronicleQueuepublic final int cycle(net.openhft.chronicle.core.time.TimeProvider timeProvider)
public long firstIndex()
ChronicleQueueLong.MAX_VALUE
if no such index exists.firstIndex in interface ChronicleQueueLong.MAX_VALUE
if no such index existspublic long entryCount()
RollingChronicleQueueentryCount in interface RollingChronicleQueuepublic int firstCycle()
firstCycle in interface RollingChronicleQueuepublic int lastCycle()
lastCycle in interface RollingChronicleQueueprotected int fileToCycle(File queueFile)
@NotNull public Consumer<net.openhft.chronicle.bytes.BytesRingBufferStats> onRingBufferStats()
public long blockSize()
public long overlapSize()
@NotNull public net.openhft.chronicle.wire.WireType wireType()
ChronicleQueueWireType used for this ChronicleQueue.
For example, the WireType could be WireTypes.TEXT or WireTypes.BINARY.
wireType in interface ChronicleQueueWireTypepublic long bufferCapacity()
@NotNull public net.openhft.chronicle.core.time.TimeProvider time()
ChronicleQueueTimeProvider for this ChronicleQueue.time in interface ChronicleQueueTimeProvider for this ChronicleQueueTimeProviderpublic TableStore metaStore()
Copyright © 2020. All rights reserved.