为多个azure存储队列创建单队列触发azure函数或为多个主题创建单服务总线触发函数

问题描述 投票:0回答:1

我有 5 个不同的队列,我想创建一个 Azure 函数,它应该侦听所有这些队列,但我读到“QueueTrigger”属性只能侦听单个队列。有什么方法可以让我只创建 1 个 azure 函数,并且该函数将侦听来自多个队列的消息?

如果队列不可能,那么主题也可以吗?

我的要求是创建一个单一的天蓝色函数,每当消息进入任何队列时,该函数都应该触发并侦听该消息。消息可以进入队列 1、队列 2、队列 3、队列 4 或队列 5,但 azure 函数对于所有这些队列只有 1。

 [FunctionName("RequestQueueWritebackFunction")]
    public async Task Run([QueueTrigger("%RequestWritebackQueueName%", Connection =   "WritebackConnectionString")]string myQueueItem, ILogger log)
    {
        log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");
    }
c# azure azure-functions message-queue azureservicebus
1个回答
0
投票

根据设计,服务总线触发功能只能由单个实体(队列或订阅)触发。虽然您不能让多个队列触发单个函数,但您可以通过更改命名空间拓扑来实现所需的目的。我的意思是改变队列的工作方式。

Azure 服务总线有一项名为“自动转发”的功能。该实体可以将消息转发到另一个实体,而不是将消息存储在实体中。在您的情况下,您可以将来自各个队列的消息合并到一个队列中,并配置该函数来处理来自该队列的消息。这也称为扇入。

这种方法有利有弊。优点可能大于缺点。例如,您可以添加和删除队列而无需修改函数。但是您需要能够区分来自不同队列的消息。这应该通过使用自定义标头来指示消息的内容而不是它来自哪个实体来完成。

此外,您还可以使用自动转发来实现其他

消息传递模式

,但这超出了您的问题的范围。

© www.soinside.com 2019 - 2024. All rights reserved.