我的ASP.NET应用可以在多个虚拟服务器上运行(例如,在Azure中我可以按需扩展)。我不知道我将在哪里托管我的应用程序,无论是Azure还是其他托管服务,但我遇到了以下问题:
我需要在某个时间表上运行作业:获取汇率,它们应该适用于所有服务器实例,检查数据库和发送电子邮件,管理应用缓存或日志或在后台执行其他工作。
我不太了解的是如何构建/构建系统,以便这些工作只执行一次(我不想在每个应用程序上提取汇率实例或多次发送电子邮件)。如此简单的Quartz.NET或QueueBackgroundWorkItem的用例并不适合我
我知道 Azure WebJobs 能够执行此类操作,但我确实希望解决方案不依赖于Azure等托管服务,因为可能明天我将要转移到另一个托管服务。
感谢。
答案 0 :(得分:1)
您是否看过NServiceBus(以及Particular Service Platform)?它可以用作异步消息处理的与部署无关的API,并且可以部署到Azure以及您自己的服务器上。
在Azure上运行时,它会利用Azure Service Bus,在您自己的服务器场上,您可以选择MSMQ,RabbitMQ甚至SQL表作为传输。
NServiceBus非常重视依赖注入,因此测试解决方案非常容易。
希望有所帮助。