azure 函数检查是否在 X 分钟后收到消息

azure function check if message received after X minutes

我是 Azure 的新手,我有一个由服务总线队列触发的函数,消息是一个 JSON 字符串。现在我想检查收到消息 3 分钟后是否有另一条消息到达。

我该如何实现?

总之没有!您必须自己轮询服务总线消息队列才能控制该行为。

什么情况下需要您在 3 分钟后检查后续消息?

您可能想使用“持久函数中的计时器”的概念。

https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-timers?tabs=csharp

您是在使用“azure 函数”还是想在 azure 中使用一个函数,例如在网络服务中?我不太确定 ;)

I have a function which is triggered by a service bus queue… I want to check if after 3 minutes of receiving the message another arrived.

Azure 服务总线可以安排或延迟消息。两者不一样。延迟意味着您需要保留一条消息并在某个时候自己检索它。调度,需要创建一条新消息。但是,两者可以结合。收到消息(消息 A)后,它可以被推迟并安排一条新消息(消息 B),其有效负载是消息 A 的序列号。当消息 B 的时间到来时,它会被您的代码接收您可以请求延迟消息 B.

这相当简单,但您需要对默认函数行为进行一些更改。您需要指定您的函数需要与接收方一起注入才能延迟传入消息 A,并创建一个发送方以 post 计划的消息。此外,功能代码现在必须区分“数据”消息 (A) 和控制消息 (B)。而且所有这些都只能与 in-process Functions SDK 一起使用,因为较新的 Isolated Worker SDK 不支持服务总线 SDK 类型。

但是,还有其他选择。您可以使用 Durable Functions 来构建您的迷你工作流程。或者,您可以使用一种中间件抽象来进行消息传递,以简化函数的实现。 MassTransit and NServiceBusSendLocal() 就可以了。

祝你征服 Azure 好运。有很多方法可以解决任何问题。尤其是云提供商。