我试图找出如何监听队列中的事件(尤其是入队事件) .
假设我有一个控制台应用程序和一个服务总线队列/主题,我如何连接到队列并等待新消息?
我试图在没有 While(true)
和常量轮询的情况下实现这一点,我试图以一种非常倾听的方式做更多事情,就像一个保持连接到队列的套接字 .
我不想使用轮询的原因是我明白它会使服务器充满请求,我需要一个可以在很大负载下运行的解决方案 .
谢谢 .
我给出了问题简单性的基本示例,但我的实际情况有点复杂:
我使用Web-API,使用Service Bus Queue将需要处理的消息发送到Worker角色 .
我需要以某种方式知道 Worker 何时处理了消息 . 我希望Worker向队列发送消息,警告Web API已经处理了消息,但现在我需要让Web-API“坐下”并等待Worker的响应,这引出了我的问题:
如何在没有轮询的情况下持续监听队列(因为有很多实例会汇集,并且会产生很多可能最好避免的请求 .
2 回答
我最终使用
QueueClient.ReceiveAsync
为了等待带有Timespan参数的消息 .这是一篇很好的文章,解释了Azure Service Bus link和Service Bus best practice的大部分内容 .
使用Azure WebJobs SDK - 它具有使用简单代码监视队列和blob的触发器,例如:
在What is the Azure WebJobs SDK有一个很棒的教程 .