尝试将SES服务与Soto SDK和Vapor 4一起使用,以我自己的路线发送电子邮件

问题描述 投票:0回答:1

我想将 SES 服务与 Vapor 4 一起使用,以我自己的路线发送电子邮件。

我一步步按照Soto Doc中的建议使用Vapor 4。

但是我收到了这个错误: AsyncHTTPClient/HTTPClient.swift:591:前提条件失败:提供的 EventLoop 必须是客户端 EventLoopGroup 的一部分。

有人可以给我一些解释或解释我如何使用 Vapor 实现 Soto SES。

谢谢:)

我按照Soto SDK文档来实现SES服务,但它不起作用

swift amazon-web-services amazon-ses vapor
1个回答
0
投票

此问题缺少一些如何设置的代码示例,但我假设如下:

let awsClient = AWSClient(
    credentialProvider: .static(accessKeyId: myAccessKeyId, secretAccessKey: mySecretAccessKey),
    httpClientProvider: .createNew
)

您可以访问

application.http.client.shared
来使用 Vapor 的
AsyncHTTPClient
实例,如下所示:

let awsClient = AWSClient(
    credentialProvider: .static(accessKeyId: myAccessKeyId, secretAccessKey: mySecretAccessKey),
    httpClientProvider: .shared(application.http.client.shared)
)

Vapor 的

req.eventLoop
是 EventLoopGroup(具有 EventLoop 的多个线程)的一部分,并获取分配给它的线程之一。

如果您随后调用

aws.ses.sendEmail(sendEmailRequest, on: req.eventLoop)
,则
on:
参数 必须 是属于用于 AsyncHTTPClient 的组的一部分的 EventLoop。如果您使用
.createNew
创建一个新的 HTTPClient,它将创建一个与 Vapor 不同的 EventLoopGroup。因此您的请求不会使用 AsyncHTTPClient 的有效线程。虽然您仍然可以使用 AsyncHTTPClient 的 EventLoop 来处理请求,但绝对建议重新使用这里的 AsyncHTTPClient Vapor。

© www.soinside.com 2019 - 2024. All rights reserved.