Node.js 读取Azure服务总线队列

Node.js 读取Azure服务总线队列,node.js,azure,azureservicebus,Node.js,Azure,Azureservicebus,我只是想找出如何最好地从Azure服务总线队列中尽快检索消息 我感到震惊的是,没有办法正确订阅通知队列,我将不得不进行投票。(除非我错了,在这种情况下,文档很糟糕) 我做了很长时间的民意调查,但每60秒检查一条消息似乎每月要花费900英镑左右(再说一次,除非我误解了这一点)。如果我添加一个冗余/秒服务来轮询,它将加倍 所以我想知道做这件事的最佳/最具成本效益的方法是什么 本质上,我只想从队列中获取一条消息,对一些内部保存的数据执行API查找(可能使用混合服务?),然后可能将一条消息和一些附加信息

我只是想找出如何最好地从Azure服务总线队列中尽快检索消息

我感到震惊的是,没有办法正确订阅通知队列,我将不得不进行投票。(除非我错了,在这种情况下,文档很糟糕)

我做了很长时间的民意调查,但每60秒检查一条消息似乎每月要花费900英镑左右(再说一次,除非我误解了这一点)。如果我添加一个冗余/秒服务来轮询,它将加倍

所以我想知道做这件事的最佳/最具成本效益的方法是什么

本质上,我只想从队列中获取一条消息,对一些内部保存的数据执行API查找(可能使用混合服务?),然后可能将一条消息和一些附加信息发布回另一个队列

我研究了工人角色(?)——这是可以做到的吗


我应该提到,我一直在考虑使用node.js来实现这一点

查看这些来自Scott Hanselman和Mark Simms在Azure队列上的视频。 这是C#但你明白了

涉及:

  • 存储队列与服务总线队列
  • 批量抓取消息与逐个抓取消息(粗块与闲聊)
  • 处理有毒信息(坏演员)
  • 杂项实施详情
  • 还有很多我现在记不起来的东西
对于您的计算,您可以执行VM、工作者角色(云服务)、应用程序服务Webjobs或Azure功能

Webjobs SDK和Azure函数bot有一种订阅队列事件(消息通知)的方法

(从IaaS到PaaS到FaaS列出-Azure功能-如果存在这样的功能)

Azure函数已经提供了作为模板的示例代码,用于对节点执行所有这些操作。只需创建一个新函数并按照向导操作即可

如果您需要在prem上触摸数据,您需要考虑与具有站点到站点连接的VNET集成,或者使用混合连接(仅适用于应用程序服务!)。Azure函数还不能做到这一点,但每一次计算都是一次尝试


(该教程仅适用于Windows,但您可以从任何操作系统中提取数据。混合连接管理器必须位于Windows机箱上,但随后它将充当网络上任何主机的反向代理)。

查看Azure队列上Scott Hanselman和Mark Simms的这些视频。 这是C#但你明白了

涉及:

  • 存储队列与服务总线队列
  • 批量抓取消息与逐个抓取消息(粗块与闲聊)
  • 处理有毒信息(坏演员)
  • 杂项实施详情
  • 还有很多我现在记不起来的东西
对于您的计算,您可以执行VM、工作者角色(云服务)、应用程序服务Webjobs或Azure功能

Webjobs SDK和Azure函数bot有一种订阅队列事件(消息通知)的方法

(从IaaS到PaaS到FaaS列出-Azure功能-如果存在这样的功能)

Azure函数已经提供了作为模板的示例代码,用于对节点执行所有这些操作。只需创建一个新函数并按照向导操作即可

如果您需要在prem上触摸数据,您需要考虑与具有站点到站点连接的VNET集成,或者使用混合连接(仅适用于应用程序服务!)。Azure函数还不能做到这一点,但每一次计算都是一次尝试


(该教程仅适用于Windows,但您可以从任何操作系统提取数据。混合连接管理器必须位于Windows机箱上,但随后它将充当网络上任何主机的反向代理)。

要轻松处理Azure ServiceBus队列,最好的选择似乎是

存在允许您从Azure ServiceBus队列获取消息的

对于node.js集成,您应该看看。它构建在webjob SDK之上,具有node.js集成:

在第二篇文章中,有一个关于如何使用Azure函数和nodejs从队列获取消息的示例:

module.exports = function(context, myQueueItem) {
    context.log('Node.js ServiceBus queue trigger function processed message', myQueueItem);
    context.done();
};

要轻松处理Azure ServiceBus队列,最好的选择似乎是

存在允许您从Azure ServiceBus队列获取消息的

对于node.js集成,您应该看看。它构建在webjob SDK之上,具有node.js集成:

在第二篇文章中,有一个关于如何使用Azure函数和nodejs从队列获取消息的示例:

module.exports = function(context, myQueueItem) {
    context.log('Node.js ServiceBus queue trigger function processed message', myQueueItem);
    context.done();
};

工人角色与服务总线无关-他们只是无状态的Windows Server VM,具有特定的配置和扩展方式。您是如何获得价格的?服务总线队列是免费的。而一条信息的成本并不在于感谢回复。我在某个地方看到,我认为工作人员角色可以得到队列添加的通知,这正是我提出这个问题的原因。对于定价,它是在http调用的代理连接下进行的,我假设这就是轮询所使用的。只有前1000个是标准层免费的。我是不是搞错了,那太好了。再次感谢。看来我可能弄错了。。常见问题解答建议,收费是针对“并发代理连接的峰值数量”,并且“峰值是以小时为单位测量的,按比例除以一个月744小时”。他们给出了如下示例:“10000个设备通过HTTP从服务总线队列接收消息,指定非零超时。如果所有设备每天连接12小时,您将看到以下连接费用10000个HTTP接收连接*每天12小时*31天/744小时=5000个代理连接。”所以,如果我的理解是正确的,让一个脚本每55秒执行一次长轮询(允许的最大值),这只算作一个“并发”连接,对吗?即使它每55秒进行一次投票?这就是1台设备*24小时*31天/744小时=我允许的100台设备中的1台