怎么听使用天蓝服务总线与Node.js的一个队列?

问题描述 投票:2回答:3

背景

我有几个客户将消息发送到一个蓝色的服务总线队列。与之相匹配的,我需要多台机器从队列中读取和使用消息到达时,使用Node.js的

研究

我已阅读并azure service bus queues tutorial我知道我可以使用receiveQueueMessage读取从队列中的消息。

但是,本教程中没有提到一个人如何能听一个队列,一旦他们到达读消息。

我知道我可以简单地轮询消息队列,但这修建垃圾服务器与没有真正的好处请求。

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

我知道他们结束了使用C#异步方法ReceiveAsync,但它不是我清楚,如果:

  1. 该方法适用于Node.js的
  2. 如果该方法尽快从队列中读取邮件到达时,就像我所需要的。

问题

对于Node.js的文档是接近不存在的,与一个教程是唯一的主要文件,我发现。

  1. 如何让我的工人被通知在蔚蓝的巴士服务队列的传入消息的?
node.js azure azureservicebus azure-servicebus-queues
3个回答
2
投票

回答

据天青的支持,这是不可能的时候一个队列接收到消息的通知。这是适用于每一种语言。

解决方法

有2个针对此问题的主要工作变通:

  1. 使用Azure的主题和订阅。这样,你可以有订阅的事件new-message所有客户,要求他们检查的队列,一旦他们收到的通知。这虽然有几个问题:第一,你必须支付又一Azure的服务,第二,你可以有多个客户端试图读取相同的消息。
  2. 连续轮询。有客户检查队列每X秒。该解决方案是可怕的,因为你最终支付你产生网络流量和您的垃圾邮件与无用请求服务。为了最大限度地减少这有一个名为长轮询,这是记录如此糟糕它也可能不存在的概念。我发现,虽然这NPM模块:https://www.npmjs.com/package/azure-awesome-queue

备择方案

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

作为替代方案有RabbitMQ是免费的,有一个社区,良好的文档和一吨多的功能。

这里的缺点是保持的RabbitMQ容错集群是不完全微不足道。

另一种方法是Apache Kafka这也是非常可靠的。


0
投票

我问自己同样的问题,这里是我发现了什么。

使用谷歌PubSub的,它是你寻找什么。

如果你想留在Azure中,以下IST可能:

  • 云功能可以从SBS消息来触发
  • 触发与该云功能的事件毂事件
  • 接收该事件,并获取从SBS消息

0
投票

你可以利用的无服务器功能,这是“ServiceBusQueueTrigger”,如消息队列到达他们尽快调用,

它非常直截了当的做的NodeJS,你需要在function.json定义的绑定有哪些类型

“类型”:“serviceBusTrigger”

这篇文章(https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus#trigger---javascript-example)可能会帮助更多的细节。

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