Обработка исключений с помощью Apache Beam и GCP PubSub - PullRequest
0 голосов
/ 17 июня 2020

Я хотел бы обработать ошибки при чтении или записи из / в pubsub, который по какой-то причине pubsub недоступен.

Например:

  1. SA не имеет разрешения на чтение / запись.
  2. Тема / подписки не закрываются
  3. Служба недоступна

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

Я видел аналогичный вопрос , но я не нашел решения этой проблемы .

То, что я тестировал:

Удаление роли издателя из SA

При этом поток данных не сможет писать в вывод topi c со следующим предложением:

    outputPS.apply("Send messages to PubSub", PubsubIO.writeStrings().to(topic));

Мы увидим сообщение об ошибке под тегом «журналы заданий». Это сообщение создается автоматически (с вызовом API pubsub, я полагаю), показывающее следующую информацию:

Были ошибки при попытке публикации sh в topi c xxx ...

Проблема, которую я вижу здесь, заключается в том, что я не смогу обработать эту ошибку, добавив собственный код, как вы можете сделать в блоке try-catch. Затем это сгенерирует необработанное исключение, и это сообщение будет go до бесконечности l oop, поскольку оно не будет подтверждено

Удаление роли подписчика из SA

При этом поток данных не сможет читать из входных topi c со следующим предложением:

p.apply("Read Messages",PubsubIO.readMessagesWithAttributes().fromSubscription(inputSub));

В этом случае мы не увидим никаких сообщений об ошибках.

Хорошим моментом в этом случае является то, что мы не сможем прочитать, тогда мы не потеряем сообщение ни из-за того, что они останется в разделе паба c.

Проблема в том, что мы не сможем узнать, что происходит, так как у нас не будет сообщений об ошибках в журнале.

Я думаю, было бы неплохо использовать что-то вроде блока try-catch, но я не уверен, возможно ли это, и если да, то как мне это сделать?

Примечания:

Во время разговора с поддержкой GCP, среди прочего, мне сказали следующее:

Пробный захват не сработает, поскольку работа делегирована устройству ветряной мельницы контейнер

Сейчас я использую Java 8 и Apache Beam 2.21

...