收听队列(事件驱动无轮询)服务总线/存储队列
Listen to Queue (Event Driven no polling) Service-Bus / Storage Queue
我想知道如何监听队列中的事件(尤其是入队事件)。
假设我有一个控制台应用程序和一个服务总线 Queue/Topic,我如何连接到队列并等待新消息?
我正在尝试在没有 While(true)
和持续轮询的情况下实现这一点,我正在尝试以一种非常听众的方式做更多的事情,比如保持连接到队列的套接字。
我不想使用轮询的原因是我知道它会使服务器充满请求,我需要一个能够在大负载下工作的解决方案。
谢谢。
为了问题的简单性,我给出了非常基本的例子,但我的实际情况有点复杂:
我有 Web-API 使用服务总线队列将需要处理的消息发送到工作者角色。
我需要以某种方式知道 Worker 何时处理了消息。
我希望 Worker 向队列发送一条消息,提醒 Web API 已处理该消息,但现在我需要创建 Web-API "sit" 并等待响应工人回来了,这引出了我的问题:
我如何在不进行轮询的情况下不断地收听队列(因为有很多实例会合并,它会创建很多请求,最好避免。
使用 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 上有很棒的教程。
我最终使用 QueueClient.ReceiveAsync
来等待带有时间跨度参数的消息。
BrokeredMessage msg = subClient.ReceiveAsync(TimeSpan.FromMinutes(3));
这是一篇很好的文章,解释了 Azure 服务总线的大部分内容 link and Service Bus best practice。
我想知道如何监听队列中的事件(尤其是入队事件)。
假设我有一个控制台应用程序和一个服务总线 Queue/Topic,我如何连接到队列并等待新消息?
我正在尝试在没有 While(true)
和持续轮询的情况下实现这一点,我正在尝试以一种非常听众的方式做更多的事情,比如保持连接到队列的套接字。
我不想使用轮询的原因是我知道它会使服务器充满请求,我需要一个能够在大负载下工作的解决方案。
谢谢。
为了问题的简单性,我给出了非常基本的例子,但我的实际情况有点复杂:
我有 Web-API 使用服务总线队列将需要处理的消息发送到工作者角色。
我需要以某种方式知道 Worker 何时处理了消息。 我希望 Worker 向队列发送一条消息,提醒 Web API 已处理该消息,但现在我需要创建 Web-API "sit" 并等待响应工人回来了,这引出了我的问题:
我如何在不进行轮询的情况下不断地收听队列(因为有很多实例会合并,它会创建很多请求,最好避免。
使用 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 上有很棒的教程。
我最终使用 QueueClient.ReceiveAsync
来等待带有时间跨度参数的消息。
BrokeredMessage msg = subClient.ReceiveAsync(TimeSpan.FromMinutes(3));
这是一篇很好的文章,解释了 Azure 服务总线的大部分内容 link and Service Bus best practice。