问题
Reading message from chronicle queue does not move the current index to the next cycle automatically. I get the following logs messages: 697917 [SCHEDULER#4] INFO net.openhft.chronicle.queue.impl.single.SingleChronicleQueueExcerpts - Rolled 2 times to find the next cycle file. This can occur if you appenders have not written anything for a while, leaving the cycle files with a gap.
What does this means?
My queue files are : 20160824.cq4 20160826.cq4 20160829.cq4 20160830.cq4. The 20160825.cq4 file does not exist, because there was no data added to the queue.
回答1:
Can you clarify what the error is you are getting?.
We have tests which show skipping missing cycles works both forwards and backwards.
What does this means?
You have explained it here
"The 20160825.cq4 file does not exist, because there was no data added to the queue."
which is why a cycle is skipped and you see
"Rolled 2 times to find the next cycle file. This can occur if you appenders have not written anything for a while, leaving the cycle files with a gap."
回答2:
This is just FYI since I can't comment as I just signed up. I was seeing a similar issue however not with the empty journals between days, just multiple days. I was getting a false return from ExcerptTailer.readDocument and noticed that the index hopped by a number greater than 2^32 between my last index and my first indicating a cycle shift. I only switched versions from
- compile 'net.openhft:chronicle-queue:4.5.5'
- compile 'net.openhft:chronicle-queue:4.5.27'
And the issue was resolved. As I am just in a prototyping phase I have not had a need to keep up so was quite far behind. I hope this helps and it does indeed look to be resolved for my case anyway.
来源:https://stackoverflow.com/questions/39268942/reading-message-from-chronicle-queue-does-not-move-the-current-index-to-the-next