为什么 Azure Logic "When a message is received in a queue (peek-lock)" "Next Available" 等待这么长时间才能接收队列消息?
Why does Azure Logic "When a message is received in a queue (peek-lock)" "Next Available" wait so long to pick up a queue message?
我的设置:
- 我创建了一个启用了会话的 Azure 服务总线队列。
Lock duration
= 1 minute
- 我创建了一个 Azure 逻辑应用程序,它带有触发器“当队列中收到消息时(窥视锁定)
Session id
= Next Available
Interval
= 15
, Frequency
= Second
- 如果我的 Azure 逻辑应用程序中的步骤成功,我
Complete the message in a queue
,否则我 Dead-letter the message in a queue
我的结果:
- Azure 逻辑应用程序一次选取一个队列消息并对其进行处理,但在选取下一条消息之前等待整个
Lock duration
(在我的例子中为 1 分钟)。
- 注意:当我设置
Session id
为特定会话id时,它不等待,而是立即处理消息
我的问题:
- 我希望 Azure 逻辑应用程序在
Session id
= Next Available
完成后立即处理更多队列消息。这可能吗?我是否缺少一个设置来告诉 Azure 逻辑应用程序不要等待整个锁定期?
你们的消息有相同的SessionId吗?
在那种情况下,我认为您的逻辑应用程序持有会话锁,因此您需要使用 "Close a session in a queue" 任务。
如果您有多条具有相同 SessionId 的消息,根据我的简单测试,它似乎会在接收具有相同 SessionId 的下一条消息之前保持会话锁定一分钟。关闭会话会导致立即处理同一会话中的下一条消息。
我在生产使用中有一个类似的情况,我必须等待一段时间并将具有相同 SessionId 的所有消息拉到一起,但如果有多个会话正在进行,它可以很好地并发运行逻辑应用程序,这就是在我的测试设置中也是如此。
我的设置:
- 我创建了一个启用了会话的 Azure 服务总线队列。
Lock duration
=1 minute
- 我创建了一个 Azure 逻辑应用程序,它带有触发器“当队列中收到消息时(窥视锁定)
Session id
=Next Available
Interval
=15
,Frequency
=Second
- 如果我的 Azure 逻辑应用程序中的步骤成功,我
Complete the message in a queue
,否则我Dead-letter the message in a queue
我的结果:
- Azure 逻辑应用程序一次选取一个队列消息并对其进行处理,但在选取下一条消息之前等待整个
Lock duration
(在我的例子中为 1 分钟)。 - 注意:当我设置
Session id
为特定会话id时,它不等待,而是立即处理消息
我的问题:
- 我希望 Azure 逻辑应用程序在
Session id
=Next Available
完成后立即处理更多队列消息。这可能吗?我是否缺少一个设置来告诉 Azure 逻辑应用程序不要等待整个锁定期?
你们的消息有相同的SessionId吗?
在那种情况下,我认为您的逻辑应用程序持有会话锁,因此您需要使用 "Close a session in a queue" 任务。
如果您有多条具有相同 SessionId 的消息,根据我的简单测试,它似乎会在接收具有相同 SessionId 的下一条消息之前保持会话锁定一分钟。关闭会话会导致立即处理同一会话中的下一条消息。
我在生产使用中有一个类似的情况,我必须等待一段时间并将具有相同 SessionId 的所有消息拉到一起,但如果有多个会话正在进行,它可以很好地并发运行逻辑应用程序,这就是在我的测试设置中也是如此。