Должен ли Поллер выдавать или обрабатывать исключение при чтении из SQS? - PullRequest
0 голосов
/ 06 мая 2019

Я пишу пользовательский java SQS Poller для чтения из Amazon SQS и выполнения некоторых операций с сообщениями. Это многопоточное приложение, которое порождает фиксированный пул потоков, и каждый поток будет слушать SQS.

Теперь у меня есть сомнения в одном из аспектов реализации, что, скажем, при получении или удалении сообщений из SQS я получил какое-то исключение, должен ли я выбросить исключение и выйти из этого потока оттуда? Или я должен просто перехватить исключение, не выбрасывая его, и повторить попытку получения сообщения снова? Во втором случае, чтобы знать, что он не работает должным образом, я, вероятно, опубликую некоторые метрики, по которым я мог бы создать сигнал тревоги, чтобы я узнал, часто ли это происходит.

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

1 Ответ

2 голосов
/ 06 мая 2019

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

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

...