休息以在整个生命周期中仅调用一次另一个进程
本文关键字:调用 进程 另一个 一次 周期 生命 | 更新日期: 2023-09-27 17:57:13
说 Rest 服务收到一个请求,该请求正在调用另一个服务(电子邮件服务),但是当 Rest 服务收到另一个调用电子邮件服务的请求时,我希望它跳过该步骤。
此外,REST 服务应该足够智能,以查看电子邮件进程是否正在运行,或者在停止时停止 允许对 REST 服务的任何下一个请求调用电子邮件服务。
休息方式 : -
void SaveDataAndCallEmailService(Data data)
{
cntx.Add(data);
cntx.SaveChanges();
SendEmail();
}
现在我的查询是如何使"SendMail()"方法仅在电子邮件进程未运行时仅调用一次。
例如: -
void SaveDataAndCallEmailService(Data data)
{
cntx.Add(data);
cntx.SaveChanges();
if(!EmailProcessIsRunning)
SendEmail();
EmailProcessIsRunning= true;
}
编辑:-
现在,这里的"EmailProcessIsRunning"总是假的,即使我把它标记为真。
当服务器收到第二个请求时,我发现"电子邮件进程正在运行"再次为假。
如何保持它的价值?
在代码示例中,EmailProcessIsRunning
未在任何地方定义。使 if 更难查看是否存在范围问题。
假设没有范围问题,如果要保留保存到无状态 webapi 服务器上的请求之间的值EmailProcessIsRunning
,则需要将依赖项解析程序添加到服务器。阅读此内容以获取更多信息 http://www.asp.net/web-api/overview/extensibility/using-the-web-api-dependency-resolver
编辑:(更简单的答案)
可以向类添加静态属性,并在进程启动时将其设置为 true。
例如
public bool static EmailProcessIsRunning { get; set; }