Сообщения падают между носиком и болтом

Я реализовал топологию цапли, которая читает сообщения из очереди Кафки. Следовательно, моя топология имеет носик кафки и болт, который подсчитывает количество сообщений, прочитанных из очереди.

Когда я излучаю, говорю 10000 Сообщения в очередь Кафки, я вижу все сообщения, получаемые в носик Кафки в топологии цапли, однако, мало сообщений теряются при болте.

Ниже приведены настройки топологии для цапли

 Config config = Config.newBuilder()
                    .setUserConfig("topology.max.spout.pending", 100000)

                    .setUserConfig("topology.message.timeout.secs", 100000)
                    .setNumContainers(1)
                    .setPerContainerCpu(3)
                    .setPerContainerRamInGigabytes(4)
                    .setDeliverySemantics("ATLEAST_ONCE")
                    .build();

Любые указатели будут полезны.

РЕДАКТИРОВАТЬ: я использую API потоковых цапли. Я заменил счетный болт с log болт, но видя ту же проблему падения сообщений в журналах log болт

processingGraphBuilder.newSource(kafkaSource)
                      .log();

РЕДАКТИРОВАТЬ 2: Я решил проблему, полностью удалив API-интерфейс потоковой передачи. Я переопределил все, используя базовый API изливов и болтов, и у меня было дозирование. Это решило проблему. Я полагаю, это произошло из-за того, что в spout в API рулетки не было подтверждений

2 ответа

Простой ответ: не должен падать.

Несколько вопросов: - В heronui, сколько всего времени излучается и проверяется ваш носик? - В heronui, каковы все время выполнения, подтверждения и неудачи вашего болта?

Когда вы говорите, что сообщения отбрасываются, вы видите ошибки, зарегистрированные в метрике счетчика ошибок, или просто то, что ваш счетчик выполнения в болте не совпадает с счетчиком выбросов излива?

В режиме совместимости с Storm метрики рассчитываются на основе выборки (я думаю, по умолчанию 5%). Таким образом, отсчеты могут быть на этом краю. Например, в зависимости от того, когда сэмплируется поток, вы можете отправить 100 кортежей, а число выполнений может быть 80 или 120.

Другие вопросы по тегам