我们正在构建的应用程序会定期发送不同类型的电子邮件.我将电子邮件模板存储在Azure blob存储中,负责发送电子邮件的方法从那里提取相应的电子邮件模板.我希望模板在托管服务之外,以防我想要更新它,我只需将新模板上传到blob即可.
从性能和成本的角度来看,我遇到的问题是电子邮件模板很少在24小时内发生变化.因此,以类似于[OutputCache(Duration = duration, VaryByParam = "id")]ASP.NET MVC 的方式缓存该方法 将是一种理想的解决方案,以提高工作者角色的性能.如何做到这一点现在是一个问题.我了解了PostSharp,但我们的预算从一开始就没有考虑PostSharp的许可费用!
还有其他免费替代品?谢谢你的帮助.
问题:我有大量的电子邮件要发送,目前,在任何时间点队列中平均有 10 封电子邮件。我一次处理一个队列的代码;也就是说,接收消息,处理它并最终发送电子邮件。这会导致在用户注册服务时向用户发送电子邮件的时间相当长。
我已经开始考虑修改代码以process the messages in parrallel异步说5。我正在想象编写一个方法并使用CTP并行调用此方法,例如 5 次。
我对如何实现这一点有点迷茫。犯错的代价非常大,因为如果出现问题,用户会感到失望。
Request:我需要帮助编写并行处理 Azure 服务总线中的消息的代码。谢谢。
My code in a nutshell.
Public .. Run()
{
_myQueueClient.BeginReceive(ProcessUrgentEmails, _myQueueClient);
}
void ProcessUrgentEmails(IAsyncResult result)
{
//casted the `result` as a QueueClient
//Used EndReceive on an object of BrokeredMessage
//I processed the message, then called
sendEmail.BeginComplete(ProcessEndComplete, sendEmail);
}
//This method is never called despite having it as callback function above.
void ProcessEndComplete(IAsyncResult result)
{
Trace.WriteLine("ENTERED ProcessEndComplete method...");
var bm = result.AsyncState …Run Code Online (Sandbox Code Playgroud)