使用Azure功能处理Azure Service Bus Queue消息

时间:2017-10-16 17:29:52

标签: c# azure azure-functions azureservicebus

因此,我们希望在我们的应用程序中卸载一些处理,以提供更好的用户体验,同时仍然完成这些繁重的任务,并找到了通往Azure服务总线队列的方法。

我理解如何将数据推送到队列以及消息队列背后的基本思想,但我正在努力理解的是当他们进来时如何处理它们。只是想到它听起来应该有一些方法来实现和Azure功能,只要有消息进入就会监听,但如果没有持续轮询,我该怎么做呢?我知道您可以使用OnMessage订阅队列,但是如何使用Azure功能?

例如,目前我们正在做这样的事情,

function Partition(array &$Array, $Column, int $Low, int $High): int {
    $Pivot = $Array[$High][$Column];

    $i = $Low - 1;

    for ($j = $Low; $j <= $High - 1; $j++) {
        if ($Array[$j][$Column] > $Pivot) {
            $i++;
            [$Array[$i], $Array[$j]] = [$Array[$j], $Array[$i]];
        }
    }

    [$Array[$i + 1], $Array[$High]] = [$Array[$High], $Array[$i + 1]];
    return $i + 1;
}

function QuickSort(array &$Array, $Column, int $Low = 0, ?int $High = null): void {
    $High = $High ?? (count($Array) - 1);

    if ($Low < $High) {
        $PartitionIndex = Partition($Array, $Column, $Low, $High);

        QuickSort($Array, $Column, $Low, $PartitionIndex - 1);
        QuickSort($Array, $Column, $PartitionIndex + 1, $High);
    }
}

但在这种情况下,我们只是模拟投票吧?这不是一个好的解决方案。我在设计中是否想到这个错误?

1 个答案:

答案 0 :(得分:3)

Azure ServiceBus的工作原理是将新消息推送到已连接的客户端,而不是让客户端轮询队列。

使用ServiceBus API,您可以使用OnMessage方法设置消息泵,但如果您使用的是Azure功能,则可以使用Service Bus触发器完成此操作。

您只需将Azure功能配置为指向要侦听的队列即可。将新消息添加到队列时,将触发您的函数,并将消息传递给它。

查看Service Bus触发器示例:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus#trigger-sample