Верблюжитель верблюдов, удаляющий начальное время

Я использую Resequencer Верблюдов в режиме "поток", чтобы гарантировать, что файлы обрабатываются в правильном порядке

.resequence(new MySequencingExpression()).stream().timeout(60000))

Тайм-аут должен составлять порядка минут, так как мы иногда получаем файлы, которые полностью вышли из строя

Когда я запустил это, я заметил, что обработка в первом файле будет отсрочена на период ожидания, что совершенно неприемлемо для нас.

Изучив код, начальная задержка возникает из-за того, что код по существу пытается сравнить первый файл с его несуществующим предшественником и затем отключить тайм-аут. То, что он должен делать, это что-то вроде: "У меня был файл за последний период ожидания, а если да, то был ли он правильным предшественником?"

Есть ли обходной путь для этого?

благодаря

Ричард

1 ответ

Это не ошибка, обратитесь к документации ResequencerEngine.

Если последний доставленный элемент имеет значение null, то есть повторно созданный resequencer, первый прибывающий элемент нуждается в тайм-аутах в миллисекундах в любом случае для того, чтобы стать готовым к доставке.

Что касается вашего комментария:

Дайте последовательность 1, 2, 3, 4 и при условии, что 1 и 2 прибыли - на этом этапе код может начать обработку

Как насчет того, если после 1 и 2 пришло 0?

Я думаю, было бы здорово, если бы разработчики разрешили пользователю устанавливать первое ожидаемое значение, потому что обычно мы знаем, что это такое, и это сэкономит ненужную задержку при запуске resequencer, но я не думаю, что в настоящее время это возможно.

licensed under cc by-sa 3.0 with attribution.