当前位置: 首页 > 知识库问答 >
问题:

如何使用带有N个ode.js?的Azure服务总线监听队列

楚丰羽
2023-03-14

我有几个客户端向Azure服务总线队列发送消息。为了匹配它,我需要几台机器从该队列中读取消息,并在消息到达时使用Node.js.

我已经阅读了azure service bus队列教程,我知道我可以使用receiveQueueMessage从队列中读取消息。

但是,本教程没有提到如何在消息到达时收听队列并读取消息。

我知道我可以简单地轮询消息队列,但是这会给服务器发送垃圾邮件,没有真正的好处。

在SO中搜索后,我发现了一个讨论,其中有人有类似的问题:

  • 侦听队列(事件驱动无轮询)服务总线/存储队列

我知道他们最终使用了C#async方法ReceiveAsync,但我不清楚是否:

  1. 该方法可用于节点。js

Node.js的留档几乎不存在,那一个教程是我找到的唯一主要文档。

  1. 如何在Azure总线服务队列中通知我的工作人员传入消息?

共有3个答案

杭英杰
2023-03-14

您可以使用“ServiceBusQueueTrigger”的无服务器函数,消息到达队列时会立即调用这些函数,

在nodejs中非常简单,您需要在函数中定义绑定。类型为的json

“类型”:“ServiceBustigger”,

本文(https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus#trigger---(javascript示例)可能会更详细地提供帮助。

高溪叠
2023-03-14

我问了我自己同样的问题,以下是我的发现。

使用谷歌PubSub,它完全符合你的要求。

如果你想继续使用Azure,以下是可能的:

  • 可以从SBS消息触发云函数
  • 使用该云函数触发事件中心事件
  • 接收事件并从SBS获取消息
单于飞鸣
2023-03-14

根据Azure支持,当队列收到消息时,不可能收到通知。这对每种语言都有效。

这个问题有两个主要的工作:

>

连续投票。让客户端每X秒检查一次队列。这个解决方案很可怕,因为你最终支付了你产生的网络流量,并且用无用的请求来垃圾邮件服务。为了最大限度地减少这种情况,有一个称为长轮询的概念,它的文档记录得非常糟糕,甚至可能不存在。我确实发现了这个NPM模块:https://www.npmjs.com/package/azure-awesome-queue

老实说,在这一点上,你可能想知道为什么你应该使用这项服务。我同意。。。

作为一种选择,有RabbitMQ是免费的,有一个社区,良好的留档和一吨更多的功能。

这里的缺点是维护RabbitMQ容错集群并不是一件小事。

另一种选择是ApacheKafka,它也是非常可靠的。

 类似资料:
  • 我正在使用azure服务总线主题和订阅机制,并希望处理所有在死信队列中的消息。 此外,我想通过C#中的Azure Web作业处理消息,并将其发送回队列。所以我想知道如何通过我的应用程序处理死信队列上的消息?

  • 我有一个服务总线Q,从Azure门户可以或多或少地看到服务总线Q包含多少条目。如何使用他们的管理API获取此计数?我仔细阅读了文档,但没有找到答案。

  • 我已经创建了一个简单的窗口服务来使用来自Azure服务总线队列的消息。我使用TopShelch创建windows服务。下面的代码从这里剪切如下示例:https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues 高频。Run(); ServiceBusHe

  • 我在同一命名空间中有2个Azure Service Bus队列。我使用ScheduledQueueTimeUTC将计划消息放置在其中一个队列(“计划队列”)中,并将要立即处理的消息放置在另一个队列(“现在队列”)中。 我想做的是设置“预定队列”的自动转发属性,以便在消息到达它们的“预定队列”时将消息转发到“现在队列”。队列转发会这样工作吗?还是队列自动转发会立即发送已排队和未排队的消息? 我在任何

  • 我有一个应用程序,在这个应用程序中,我可以在进程的一部分中以JSON格式将消息写入Azure服务总线队列。我有一个下游进程,我想将该消息从队列中弹出,将json转换为一个对象,然后处理该对象。 我没有问题将消息推送到队列上,但我还没有找到任何将消息从队列中逐一或循环弹出的示例。我在微软或Github上看到的每一个例子都是一个控制台应用程序(在网络应用程序中毫无用处),它设置了某种侦听器,可以抓取队

  • 今天晚上,我们观察到排队时间非常慢。我们的追踪数据告诉我们 需要45-60秒。这种情况发生在两个已经存在很长时间的队列上。他们几乎从来没有超过1-2条记录,我们使用一个带有服务总线触发器的网络作业来完成任务。我们正在排队等候一个简单的POCO。还有另一个队列正在快速排队,所以由于没有任何其他想法,我删除了两个麻烦的队列。当代码重新创建它们时(正如它被构建时所做的那样),它们在不到一秒钟的时间里开始