Я хотел бы обработать ошибки при чтении или записи из / в pubsub, который по какой-то причине pubsub недоступен.
Например:
- SA не имеет разрешения на чтение / запись.
- Тема / подписки не закрываются
- Служба недоступна
Во всех этих случаях я не нет журнала ошибок, поэтому я не могу узнать, когда это произойдет и причину.
Я видел аналогичный вопрос , но я не нашел решения этой проблемы .
То, что я тестировал:
Удаление роли издателя из 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