2017-04-25 39 views
0

我有一个从ServiceBus主题读取消息的Azure WebJob,我正在寻找加速它的方法。我已经看到了使用多个工厂和异步方法执行此操作的方法,但这些示例并不适用于WebJob,我不确定如何将其应用于Web工作,任何建议或指向相关文章的链接都会很多不胜感激!如何加快WebJob中Azure ServiceBus主题的读取速度?

我看到的文章加快使用ServiceBus的想法在这里:https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-performance-improvements我认为在一个正常的EXE我可以使用多工厂和异步的想法,但与WebJob我有一个方法ServiceBusTrigger属性,所以我不确定我是否可以在WebJob中使用本文中的想法。

+0

使用异步/等待不会使您的代码运行得更快,但它可以让您的代码进一步扩展。 Async/await只是确保在异步操作执行时,调用线程不会被阻塞并等待结果。该线程可用于执行其他操作。当异步调用返回时,将分配一个线程以继续执行。 –

回答

1

如果您使用的是ServiceBusTrigger,您几乎被锁定到一个单独的消息接收器中,并将OnMessage处理程序设置为要配置的并发性。为了获得吞吐量,您可以使用NoAutomaticTrigger webjob并创建自己的基础结构来处理消息处理。使用这种方法,您可以创建多个消息接收器,每个消息接收器具有一个工厂(通道),并且在每个接收器上设置并发。异步(如果你不使用它)将有助于以及@Rob指出。

这种方法的缺点是您需要自己做所有事情或者使用第三方为您提供中间件位。 NServiceBus或MassTransit是两个选项。 NServiceBus有一个show case,它使用可以转换为使用服务总线的webjobs和存储队列。

+0

太好了,谢谢肖恩! –