Чтение сообщения из хронической очереди не перемещает текущий индекс в следующий цикл автоматически
Чтение сообщения из хронической очереди не приводит к автоматическому перемещению текущего индекса в следующий цикл. Я получаю следующие сообщения журналов: 697917 [SCHEDULER#4] INFO net.openhft.chronicle.queue.impl.single.SingleChronicleQueueExcerpts - Свернут 2 раза, чтобы найти файл следующего цикла. Это может произойти, если ваши пользователи не написали ничего некоторое время, оставляя файлы цикла с пробелом.
Что это значит?
Мои файлы очереди: 20160824.cq4 20160826.cq4 20160829.cq4 20160830.cq4. Файл 20160825.cq4 не существует, так как данные не были добавлены в очередь.
2 ответа
Можете ли вы уточнить, какую ошибку вы получаете?
У нас есть тесты, которые показывают, что пропуск пропущенных циклов работает как вперед, так и назад.
Что это значит?
Вы объяснили это здесь
"Файл 20160825.cq4 не существует, поскольку в очередь не было добавлено данных".
Вот почему цикл пропускается, и вы видите,
"Свернули 2 раза, чтобы найти следующий файл цикла. Это может произойти, если ваши пользователи не написали что-то некоторое время, оставляя файлы цикла с пробелом".
Это только к вашему сведению, так как я не могу комментировать, поскольку я только что зарегистрировался. Я видел подобную проблему, однако, не с пустыми журналами между днями, а всего лишь несколько дней. Я получил ложное возвращение от ExcerptTailer.readDocument и заметил, что индекс перескочил на число больше чем 2^32 между моим последним индексом и моим первым, указывающим на сдвиг цикла. Я только переключил версии с
- скомпилируйте net.openhft: хроническая очередь:4.5.5
- скомпилируйте net.openhft: хроническая очередь:4.5.27
И проблема была решена. Поскольку я нахожусь в стадии прототипирования, мне не нужно было отставать, поэтому я был довольно далеко позади. Я надеюсь, что это поможет, и это действительно выглядит разрешенным для моего случая в любом случае.