因此,我们希望在我们的应用程序中卸载一些处理,以提供更好的用户体验,同时仍然完成这些繁重的任务,并找到了通往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);
}
}
但在这种情况下,我们只是模拟投票吧?这不是一个好的解决方案。我在设计中是否想到这个错误?
答案 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