Сообщения сбрасывают между носиком и болтом - PullRequest
0 голосов
/ 07 ноября 2018

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

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

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

 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 ]

0 голосов
/ 07 ноября 2018

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

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

0 голосов
/ 07 ноября 2018

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

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

...