我正在尝试弄清楚如何监听队列上的事件(尤其是入队事件)。
假设我有一个控制台应用程序和一个服务总线队列/主题,如何连接到队列并等待新消息?
我试图在没有 While(true)
和持续轮询的情况下实现这一目标,我试图以一种相当监听的方式来实现这一点,比如保持连接到队列的套接字。
我不想使用轮询的原因是,我知道它会用请求淹没服务器,我需要一个能够在大负载下工作的解决方案。
谢谢。
为了问题的简单性,我给出了非常基本的例子,但我的实际情况有点复杂:
我有 Web-API,它使用服务总线队列将需要处理的消息发送到辅助角色。
我需要以某种方式知道 Worker 何时处理了消息。 我希望 Worker 向队列发送一条消息,提醒 Web API 已处理该消息,但现在我需要让 Web-API “坐下”并等待 Worker 的响应,这引出了我的问题:
如何不断地监听队列而不进行轮询(因为有很多实例将进行池化,并且它会创建大量请求,这可能是最好避免的。
最佳答案
使用 Azure WebJobs SDK - 它具有触发器,可以使用简单的代码监视队列和 blob,例如:
public static void Main()
{
JobHost host = new JobHost();
host.RunAndBlock();
}
public static void ProcessQueueMessage([QueueTrigger("webjobsqueue")] string inputText,
[Blob("containername/blobname")]TextWriter writer)
{
writer.WriteLine(inputText);
}
What is the Azure WebJobs SDK 有一个很棒的教程.
关于azure - 监听队列(事件驱动,无轮询)服务总线/存储队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33336535/