我有几个客户将消息发送到一个蓝色的服务总线队列。与之相匹配的,我需要多台机器从队列中读取和使用消息到达时,使用Node.js的
我已阅读并azure service bus queues tutorial我知道我可以使用receiveQueueMessage
读取从队列中的消息。
但是,本教程中没有提到一个人如何能听一个队列,一旦他们到达读消息。
我知道我可以简单地轮询消息队列,但这修建垃圾服务器与没有真正的好处请求。
在SO搜索后,我发现了一个讨论,其中有人也有类似的问题:
我知道他们结束了使用C#异步方法ReceiveAsync
,但它不是我清楚,如果:
对于Node.js的文档是接近不存在的,与一个教程是唯一的主要文件,我发现。
据天青的支持,这是不可能的时候一个队列接收到消息的通知。这是适用于每一种语言。
有2个针对此问题的主要工作变通:
new-message
所有客户,要求他们检查的队列,一旦他们收到的通知。这虽然有几个问题:第一,你必须支付又一Azure的服务,第二,你可以有多个客户端试图读取相同的消息。老实说,在这一点上,你可能想知道为什么你应该使用这项服务。我同意...
作为替代方案有RabbitMQ是免费的,有一个社区,良好的文档和一吨多的功能。
这里的缺点是保持的RabbitMQ容错集群是不完全微不足道。
另一种方法是Apache Kafka这也是非常可靠的。
我问自己同样的问题,这里是我发现了什么。
使用谷歌PubSub的,它是你寻找什么。
如果你想留在Azure中,以下IST可能:
你可以利用的无服务器功能,这是“ServiceBusQueueTrigger”,如消息队列到达他们尽快调用,
它非常直截了当的做的NodeJS,你需要在function.json定义的绑定有哪些类型
“类型”:“serviceBusTrigger”
这篇文章(https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus#trigger---javascript-example)可能会帮助更多的细节。