Отправка писем асинхронно в kotlin с AWS SES - PullRequest
0 голосов
/ 06 февраля 2020

Я относительно новичок в kotlin, и я пытаюсь уточнить некоторый код почтовой рассылки в устаревшем приложении.

Чтобы сделать его более производительным, я пытаюсь использовать асин c Функции SES для одновременной отправки пакетов электронной почты.

Я делаю это так ...

val futureList: MutableList<Future<SendEmailResult>> = mutableListOf()

val result: Future<SendEmailResult> = client.sendEmailAsync(SendEmailRequest()
                            .withMessage(message)
                            .withDestination(Destination()
                                    .withToAddresses(it.emailAddress))
                            .withSource("mysender@mydomain.com")
                    )

                    futureList.add(result)

val resultList = futureList.map { it.get() }

Итак, по сути, я перебираю список получателей, создавая все фьючерсы (не уверен, что это правильная терминология или нет), и добавление их в список, а затем вызов .get () для каждого, чтобы убедиться, что все они завершены.

Я действительно не знаю, если это это правильный способ сделать это или нет. Кажется, это работает, но я не знаю, действительно ли он отправляет электронные письма одновременно или нет.

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

То, что я хотел бы сделать, сможет получить список всех успехов из пакета и всех сбоев и пометить их как таковые в моей таблице базы данных.

Я свободно основываю это на некотором коде, который я ранее написал для. Net приложение, где я создаю список задач, а затем использую «Await Task.WhenAll», чтобы завершить их все одновременно. Я не знаю, является ли вышеупомянутое смутно эквивалентным или нет.

...