我有一个现有的webjob(.NET 4.6.1)运行良好,并在消息到达队列时被触发。我正在研究如何将一些应用程序迁移到.NET Core 1.0,作为其中一部分,我做了一些研究。
就目前而言,.NET Core 1.0仅支持按计划运行并且没有特殊Webjob功能的webjobs,例如:https://blog.kloud.com.au/2016/06/08/azure-webjobs-with-dotnet-core-rc2/
要让队列消息触发作业,我需要Webjob包的功能。当我添加任何WebJobs Nuget包(包括beta版)时,我收到错误:
Package Microsoft.Azure.WebJobs.Core 2.0.0-beta2 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.Azure.WebJobs.Core 2.0.0-beta2 supports: net45 (.NETFramework,Version=v4.5)
One or more packages are incompatible with .NETCoreApp,Version=v1.0.
我确实已经为Azure存储应用了一种解决方法,如下所述: https://jeremiedevillard.wordpress.com/2016/09/27/use-the-azure-storage-library-in-netcore-application/ 但是显然没有解决Webjob包的问题。
我知道在.NET Core网站旁边部署非.NET Core webjob的一些解决方法,如下所述:How do I deploy an Azure WebJob alongside a .NET Core Web App via Git? 但是 - 虽然这样可行 - 我只想知道我是否可以将我的webjob移植到.NET Core 1。
有没有人知道这样做的方法?
TIA, 的Jeroen
答案 0 :(得分:3)
据我所知,目前不支持在.NET Core中使用WebJobs SDK的Azure WebJobs。以下是从davidebbo提到的剪辑。更多详情请参阅issue。
为了澄清,使用.NET Core的Azure WebJobs运行良好。它特别使用了尚不支持的WebJobs SDK。
答案 1 :(得分:3)
由于Azure存储队列中没有内置推送/通知机制,因此它仍在进行轮询。
您可以每隔X秒轮询一次队列并检查新消息。这就是SDK无论如何都在做什么,但是以文明,优雅的方式。这样做没有错。
Azure存储队列
Push-style API:否
服务总线队列
推式API:是
OnMessage 和OnMessage会话.NET API。