azure - 监听队列(事件驱动,无轮询)服务总线/存储队列

标签 azure azureservicebus servicebus azure-servicebus-queues azure-queues

我正在尝试弄清楚如何监听队列上的事件(尤其是入队事件)。

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

我试图在没有 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/

相关文章:

Azure Web 作业,队列中可用的旧消息未触发服务总线触发器

azure - 如果从服务总线触发逻辑应用程序,如何识别我的关联 ID 或标识符

asp.net - 我什么时候应该在 ASP.NET 网站中使用服务总线?

azure - 是否应该使用 Azure Synapse 的主存储作为数据湖?

azure - 谁能帮我解决这个错误

azure - V2 Azure Function ServiceBusTrigger 不工作

c# - 未收到 Azure 服务总线消息

java - 尝试在 azure 模拟器上运行 Java/Eclipse 应用程序时出现路径太长错误

c# - Azure KeyVault : Azure. Identity.CredentialUnavailableException:DefaultAzureCredential 无法从包含的凭据中检索 token

c# - ServiceBus 抛出 401 未授权错误