Azure ACS邮件重复发送问题排查:已定位非Bug原因
问题已解决:重复发送邮件的原因及解决方案
已确认原因(非Bug问题)
经排查发现核心问题:
- 定时器触发器(Timer Trigger)每20秒执行一次邮件发送代码,读取的是**生产(prod)与预发布(staging)环境共享的表存储(Table Storage)**中的待发送邮件条目
- 由于同时部署了生产和预发布两个槽位,约30%的场景下两个环境的代码执行时间间隔过短,表存储尚未更新邮件发送状态,双方就已完成发送操作,最终导致重复邮件
原问题(供遇到同类情况的用户参考)
我正在使用Azure Communication Services(ACS)的azure.communication.email Python包发送邮件,代码部署在Azure Python Function中,发送逻辑无循环:
client = EmailClient.from_connection_string(email_conn_string) message = { ... } poller = client.begin_send(message) result = poller.result()
根据Azure Functions诊断信息,代码仅被调用一次且无报错,但约30%的情况下收件人会收到重复邮件。ACS日志显示,出现重复时会在200ms内产生两次SendEmail操作,分别指向**西欧(West Europe)和北欧(North Europe)**区域。我的ACS配置为“位置:全局(Global)”、“数据位置:欧洲(Europe)”。
请问该问题的成因是什么,如何解决?
内容的提问来源于stack exchange,提问作者PetriL
相关产品推荐
相关产品推荐

