我想将 SES 服务与 Vapor 4 一起使用,以我自己的路线发送电子邮件。
我一步步按照Soto Doc中的建议使用Vapor 4。
但是我收到了这个错误: AsyncHTTPClient/HTTPClient.swift:591:前提条件失败:提供的 EventLoop 必须是客户端 EventLoopGroup 的一部分。
有人可以给我一些解释或解释我如何使用 Vapor 实现 Soto SES。
谢谢:)
我按照Soto SDK文档来实现SES服务,但它不起作用
此问题缺少一些如何设置的代码示例,但我假设如下:
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。