我有一个逻辑应用程序,该应用程序具有“从服务总线队列中获取消息(窥视锁定)”操作。我经常希望该操作返回而没有任何消息,因此我检查了响应的长度,看它是否为0,然后进行一些工作来填充队列。
我的问题是,当队列为空时,读取服务总线的操作将花费30秒。这样会给Logic App调用者一个响应,从而导致严重的延迟。
如何使该操作超时?
我查看了“动作”设置,其中有一个描述
超时
限制异步模式可能花费的最大持续时间。注意:这不会更改单个请求的请求超时。
我不确定这意味着什么,但是我本以为应该将响应的异步轮询持续多长时间。
将此值更改为PT10S无效。
我怀疑问题在于对服务总线的呼叫是一个长时间轮询,硬编码为30秒后超时-任何人都可以确认或驳斥此问题吗?
有什么办法可以减少这个时间?
答案 0 :(得分:0)
超时
限制异步模式可能花费的最大持续时间。注意:这不会更改单个请求的请求超时。
此设置不会影响操作持续时间,因为与异步回调相反,服务总线“获取操作和触发器”将实现单个http请求(将队列轮询到内部)。
我怀疑问题在于对服务总线的呼叫是一个长时间轮询,硬编码为30秒后超时-任何人都可以确认或驳斥此问题吗?
根据我对连接器的了解,“获取服务总线操作和触发器”会执行30秒的长时间轮询,您无法更改。
更新除了按照下面的建议使用Azure函数之外,您还可以在实现并行分支的Nested Logic App中抽象GetMessages
调用。如果主分支花费的时间超过阈值,则一个分支将从队列中读取,而另一个分支将返回超时响应。
http://mikaelsand.se/timeout-and-parallel-branches-in-logic-apps/
HTH