Встроенный анализ событий SES в AWS SDK - PullRequest
1 голос
/ 12 марта 2020

Мы используем SES для отправки электронных писем и следуем совету использовать поток очереди SNS Topi c -> SQS для захвата таких событий, как Bounce, Delivery и т. Д .:

Amazon SES diagram

Я сейчас изучаю реализацию стороны "Процессора", где мы будем запрашивать очередь SQS для новых сообщений, анализировать соответствующие биты и действовать соответственно ( например обновить что-нибудь в базе данных).

Я пишу это в Kotlin, используя Java SDK, предоставленных AWS. До сих пор мне удавалось развернуть внешний бит SNS JSON, используя что-то вроде следующего:

class SnsEmailNotificationHandler : DefaultSnsMessageHandler() {
    override fun handle(message: SnsNotification?) {
        val messageStr = message?.message
        println(messageStr)
    }

}

...

val messages = sqs.receiveMessage(queueUrl).messages
val snsMessageHandler = SnsEmailNotificationHandler()
messages.forEach {
    SnsMessageManager().handleMessage(it.body.byteInputStream(), snsMessageHandler)
}

Выполнение этого в очереди примеров с некоторыми уведомлениями SES, строкой, которая печатается в консоль - это развернутое уведомление SES, которое следует за spe c здесь . Я доволен этим до сих пор, потому что я смог использовать встроенные в Amazon SDK вещи вместо того, чтобы дублировать их структуру сообщений, чтобы проанализировать JSON.

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

  • Это стандартный код, который я бы скорее не поддерживать
  • Хрупко, если amazon когда-нибудь изменит свой API

Вместо этого, я надеюсь, существуют некоторые готовые объекты данных где-то в Amazon SDK, такие как SnsNotification Я использовал ранее. Кто знает, может быть, даже метод AmazonEmailEvent.parse(...), который вернул бы мне класс, который я могу проверить в экземпляре, чтобы выяснить, является ли это отскоком или доставкой и go оттуда.

У меня нет нашел их быстро, хотя, так что я начинаю верить, что они не существуют ... что было бы действительно плохо. Кто-нибудь нашел хороший способ сделать это?

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