我正在开发ASP.NET Web API服务并将它们放到要处理的Azure Service Bus队列中。 Web API服务托管在Azure上。
我需要实现一个侦听这些消息的应用程序,并在收到这些消息时对其进行处理。
我希望将此托管在Azure上,但不确定最佳方法。
答案 0 :(得分:5)
你可以做几件事。 您可以使用ASB的OnMessage API,它允许您注册回调并处理并发和自动完成的传入消息。
在Azure上,您有几个选项:Cloud Services(工作人员角色),Azure Web Jobs,Azure Functions(如果处理速度很快,否则我不推荐),服务结构(如果系统很小,可能有点过分),如果需要则可以是普通的虚拟机。
关于功能的警告 - 如果你做了大量工作,功能并不理想,因为你需要支付你执行的时间/内存。
答案 1 :(得分:2)
侦听队列的工作人员的几个选项是:
您可以在此处查看使用功能的示例:https://docs.microsoft.com/en-us/azure/azure-functions/functions-create-an-event-processing-function。
使用Web Jobs的示例如下:https://docs.microsoft.com/en-us/azure/app-service-web/websites-dotnet-webjobs-sdk-service-bus。
两者都允许您创建使用队列消息的后台作业。两者都支持存储和服务总线队列。主要区别在于Web作业需要具有一定数量实例的应用程序服务计划,而功能可以在动态计划上运行,该计划可以完全自动扩展。
您应该注意,函数不适用于长时间运行的作业(超过5-15分钟),尽管它们都不是Web作业。
答案 2 :(得分:0)
为什么不尝试在docker中运行linux进程(守护进程)。