1

我们进行了架构更改,现在每个流式消息平均重复 5 次。像另外 5 条消息一样很多,并且正在影响性能。

  • 在我们直接连接到第三方事件中心的捕获 blob 存储之前(该事件中心有 32 个分区)。
  • 现在我们有一个连接到第三方事件中心的天蓝色函数。这个天蓝色的功能正在我们的事件中心推送消息。我们正在使用来自我们的事件中心的捕获。我们的事件中心只有 3 个分区(我们遵循 microsoft 建议的分区号)

我知道重复和事件中心重复的主题已被广泛讨论(请参阅下面的链接)。而且我仍然对我得到的重复数量感到困惑。是否期望在 中,每条消息平均可以重复 5 次?

我们的吞吐量单位是 1 ,自动膨胀 3。分区号是 3。

功能代码如下:

using Microsoft.Azure.EventHubs;
using Microsoft.Azure.WebJobs;
using SendGrid.Helpers.Mail;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;

namespace INGESTION
{
    public static class InvoiceMasterData
    {
        [FunctionName("InvoiceMasterData")]
        public static async Task Run([EventHubTrigger("InvoiceMasterData", Connection = "SAP_InvoiceMasterData")] EventData[] events,
                                     [EventHub("InvoiceMasterData", Connection = "Azure_InvoiceMasterData")] IAsyncCollector<EventData> outputEvents,
            [SendGrid(ApiKey = "AzureSendGridKey")] IAsyncCollector<SendGridMessage> messageCollector, ILogger log)
        {
            var genericFunctionStopper = new GenericFunctionStopper();

            await genericFunctionStopper.Loaddata(outputEvents, "InvoiceMasterData", messageCollector, log, events);
        }
    }
}

分享以下事件中心指标:在此处输入图像描述

和功能指标: 在此处输入图像描述

我们还观察到我想分享的第二个意外行为(也许我应该问另一个问题)。

以前,在旧架构中,我们从来没有为每个发票主键使用相同的 EnqueuedTimeUtc。现在有了新的架构,使用该功能,它一直在发生。这是一个问题,因为我们使用 EnqueudTimeUtc 进行重复数据删除。是因为我们以某种方式批量处理消息吗?是不是因为我们的分区数少了?

任何建议、观察、专业知识将不胜感激!

https://docs.microsoft.com/en-us/azure/azure-functions/functions-reliable-event-processing
带有事件中心触发器的 Azure 函数写入重复消息
Azure Functions 事件中心触发器绑定
https://github.com/ Azure/azure-event-hubs-dotnet/issues/358

4

0 回答 0