我目前正在评估使用一个服务总线和azure函数来触发一些需要通过下游api调用来完成的工作。这都是相当标准的,只是我没有很好地处理当下游系统过载和/或返回header到trottle时会发生什么(即每分钟最大调用数/等)。对于队列触发器的强制节流,我们似乎没有任何动态控制。
我知道我们可以手动设置最大并发,但这并不一定解决问题,因为我们无法控制下游系统,需要考虑它随时可能脱机或变慢。
假设消费计划,从解决方案的角度来看,这是我能想到的一种方法:
基本上,当下游系统饱和时,Queue1成为queue2和queue3的控制器。
我想知道我是否遗漏了一些简单的处理下游饱和或限制队列触发器(可能是服务总线或存储队列)的最佳方法
编辑:我想补充的是,我将100万条消息注入到一个在发送时间调度的服务总线队列中。我看到Azure函数(消费计划)规模达到1500/秒左右,以提供一个很好的度量。我还不确定那些敬业的会有怎样的表现。
看起来主机文件可以在飞行中修改,设置立即生效。虽然这是所有的功能,它可能在我的特定情况下工作(更新设置和检查每分钟左右,取决于速率限制)。
不幸的是,像您所需要的backpresssure特性目前还不能与服务总线触发器一起使用(更普遍地说,Azure函数也是如此),所以您需要自己处理。
您所描述的方法是可行的,您只需要在不同的功能应用程序中处理它,因为服务总线设置适用于整个应用程序,而不仅仅是一个功能。
在您的场景中可能不会有很大帮助,但对于处理队列2或3的应用程序,您还可以尝试使用一个预览标志来限制应用程序的扩展实例数:website_max_dynamic_application_scale_out
。请注意,这是在预览,还没有任何保证。
我会鼓励您打开一个关于功能回购文档您的场景的问题。这些问题肯定是我们想要解决的,我们得到的反馈越多越好。
在.NET core 2.0中使用创建时,我遇到了一个问题。 在体系结构中,当在用于创建用户的队列中创建新消息时,服务必须接收该消息并根据其中的信息在数据库中创建用户。 在Visual Studio2017中,我在下创建了一个新项目。 这种的正确实现是什么?在GitHub上有什么例子吗?提前道谢。
我已经创建了一个Azure webwork,它将向服务总线队列发送强类型消息,并成功发送。 我想创建另一个webjob,只要servicebus队列中有消息,就会触发该webjob。请在下面找到我正在尝试的代码。出于某种原因,尽管servicebus队列中有消息,但当我在本地运行webjob时,webjob未被触发并出现错误。 错误: 代码: 有谁能帮我解决这个问题吗? 谢谢
我一直在尝试为Azure函数实现DI,其中函数由ServiceBus触发(本例中为主题/订阅): 我在以下网站上阅读了有关Azure Functions和DI的信息: https://mcguirev10.com/2018/04/03/service-locator-azure-functions-v2.html https://blog.wille-zone.de/post/azure-func
我有一个服务总线主题,它有40万条消息从一个Azure函数推送到它。我有第二个Azure函数接收消息作为触发器。第2个函数运行时,成功处理了98%的消息。它给我留下了大约8000条失败的消息。由于异常或我的代码,消息被放弃了。我现在有8,000条消息坐在一个主题的订阅者中,我不能让函数重新尝试处理。 订阅服务器最初被设置为只允许1邮件传递。我之所以这么做,是因为在调试时,我看到同一条消息被多次处理
我正在运行Visual Studio 2017预览并在本地运行函数代码,我正在使用开箱即用的Azure函数项目模板。我试图让一个由定时器触发的Azure函数使用输出绑定向服务总线队列发送消息,但WebJob SDK似乎无法将输出绑定到字符串类型。 结合 定时器功能 错误消息 TimerTriggerCSharp: Microsoft.Azure.WebJobs.Host: Error indexi