侦听队列(事件驱动无轮询)服务总线/存储队列

Ron*_*Ron 7 servicebus azure azure-queues azureservicebus azure-servicebus-queues

我想弄清楚如何监听队列中的事件(尤其是入队事件)。

假设我有一个控制台应用程序和一个服务总线队列/主题,我如何连接到队列并等待新消息?

我试图在没有While(true)持续轮询的情况下实现这一点,我试图以一种非常听话的方式来做更多的事情,比如保持连接到队列的套接字。

我不想使用轮询的原因是我知道它会用请求淹没服务器,我需要一个可以在大负载下工作的解决方案。

谢谢你。

为了简单起见,我给出了非常基本的示例,但我的实际情况要复杂一些:

我有使用服务总线队列将需要处理的消息发送到工作角色的 Web API。

我需要以某种方式知道 Worker 何时处理了消息。我希望 Worker 向队列发送一条消息,提醒 Web API 已处理该消息,但现在我需要让 Web API“坐下”并等待 Worker 的回复,这引出了我的问题:

如何在不进行轮询的情况下不断地收听队列(因为有很多实例会进行池化,并且会创建很多可能最好避免的请求。

Ron*_*Ron 1

我最终使用了QueueClient.ReceiveAsyncIn order to wait for message with a Timespan 参数。

            BrokeredMessage msg = subClient.ReceiveAsync(TimeSpan.FromMinutes(3));
Run Code Online (Sandbox Code Playgroud)

这是一篇很好的文章,解释了 Azure 服务总线链接服务总线最佳实践的大部分内容。

  • 因此您切换到服务总线队列而不是使用 Azure 存储队列? (2认同)
  • 它在 Azure ServiceBus 客户端的 Microsoft.Azure.ServiceBus 新 .NET Standard Nuget 包中不可用:( :( :( (2认同)