gpt4 book ai didi

c# - 计算来自两个Azure函数应用程序的两个服务总线主题之间的时间跨度指标

转载 作者:行者123 更新时间:2023-12-03 03:23:58 26 4
gpt4 key购买 nike

我有两个服务总线触发器,每个触发器都是在单独的两个 Azure 函数应用项目中创建/定义的。理想情况下,流程是当我收到发送到第一个 Azure 函数应用程序中的服务总线主题的消息时,它将处理信息并将该消息传输到第二个 Azure 函数应用程序中的第二个服务总线主题,然后它将再次处理该消息并最终传递以电子邮件/短信格式发送给最终用户。

目前,每个函数应用(即 1 和 2)中都有可用/计算的处理时间指标,但我希望总结两个函数应用的处理时间并捕获该指标。

是否可以汇总两个 Azure 函数应用的处理时间并在第二个 Azure 函数应用中捕获该指标?

最佳答案

解决方案是将某种元数据添加到服务总线消息的正文中,以跟踪指标。我将根据您正在寻找的答案提供两个答案:

  • 情况 1: timeInProcess1 + timeInProcess2
  • 情况 2: timeInProcess1 + timeIn Between + timeInProcess2

案例1

将处理时间作为元数据添加到服务总线消息的正文中。例如。如果您使用的是带有 json 数据的正文:

{
"metadata": {
"totalProcessingTimeInMilliseconds": 0,
..
},
..
}
// Parse the message body into a DTO mirroring the message body
receivedMessageBody = JsonConvert.DeserializeObject<MessageBody>(receivedMessage.Body.ToString());

// Do any neccessary checks to validate the data
// ..

// Use message received from the first function app and sum it with the current (second function app) processing time
var totalProcessingTimeInMs = receivedMessageBody.Metadata.TotalProcessingTimeInMilliseconds + currentProcessingTimeInMs;

// Create your email/sms and sending along totalProcessingTimeInMs
// ...

案例2

不要使用应用计算的处理时间指标,而是将第一个进程的开始 DateTime/DateTimeOffest 保存在元数据中。然后,当第二个过程完成时,保存结束的DateTime/DateTimeOffset并计算差值:

var endOfProcess2 = DateTimeOffset.Now;
var totalProcessingTimeInMs = (endOfProcess2 - receivedMessageBody.Metadata.StartOfProcess1).TotalMilliseconds;


// Create your email/sms and sending along totalProcessingTimeInMs
// ...

关于c# - 计算来自两个Azure函数应用程序的两个服务总线主题之间的时间跨度指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76037922/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com