Я относительно новичок в 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», чтобы завершить их все одновременно. Я не знаю, является ли вышеупомянутое смутно эквивалентным или нет.