通过MailGun接收邮件时,他们需要在有限的时间内回复。我对此有两个问题:
1)收到消息后,我需要处理并将其记录在我的CRM中,这需要一些时间。这导致MailGun在我发送响应之前超时。然后,MailGun随着超时继续反复发送该消息。
2)MailGun的帖子不是异步的,但是对我的CRM的api调用是异步的。
因此,我需要向MailGun发送200响应,然后继续处理该消息。而且该过程必须是异步的。
以下代码显示了我想要发生的事情。我尝试使用任务,但无法正常工作。有时候,如果解决方案需要某种并行任务或线程,则可能需要一次处理很多电子邮件(例如初始化某人的帐户时),
fun addMessageToDatabase(message: String, fromId: String, toId: String,
addedMessageSuccessHandler: () -> Unit,
addedMessageFailureHandler: () -> Unit) {
val latestMessageRef = mDatabase.getReference("/latest-messages/$fromId/$toId")
latestMessageRef.setValue(message).addOnSuccessListener {
latestMessageUpdateSuccessHandler.invoke()
}.addOnFailureListener {
latestMessageUpdateFailureHandler.invoke()
}
}
谢谢您的帮助!