다음을 통해 공유


.NET Aspire Azure Event Hubs 통합

Azure Event Hubs 모든 원본에서 모든 대상으로 대기 시간이 짧은 초당 수백만 개의 이벤트를 스트리밍할 수 있는 클라우드의 네이티브 데이터 스트리밍 서비스입니다. .NET Aspire Azure Event Hubs 통합을 사용하면 .NET 애플리케이션에서 Azure Event Hubs 인스턴스에 연결할 수 있습니다.

호스팅 통합

.NET .NET Aspire Azure Event Hubs 호스팅 통합은 다양한 Event Hub 리소스를 다음과 같은 형식으로 모델화합니다.

앱 호스트 프로젝트 내에서 이러한 형식 및 API에 액세스하려면 📦Aspire.Hosting.Azure.EventHubs NuGet 패키지를 설치하세요.

dotnet add package Aspire.Hosting.Azure.EventHubs

자세한 내용은 dotnet add package 또는 .NET 응용 프로그램에서 패키지 종속성 관리를 참조하십시오.

Azure Event Hubs 리소스 추가

앱 호스트 프로젝트에 AzureEventHubsResource 추가하려면 이름을 제공하는 AddAzureEventHubs 메서드를 호출한 다음, AddHub호출합니다.

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddAzureEventHubs("event-hubs");
eventHubs.AddHub("messages");

builder.AddProject<Projects.ExampleService>()
       .WithReference(eventHubs);

// After adding all resources, run the app...

앱 호스트에 Azure Event Hubs 리소스를 추가하면 Event Hub 리소스, 소비자 그룹을 추가하고 명시적 프로비저닝 구성을 표현하는 다른 유용한 API를 노출하고 Azure Event Hubs 에뮬레이터를 사용할 수 있습니다. 앞의 코드는 event-hubs라는 Azure Event Hubs 리소스와 messages이라는 Event Hub를 앱 호스트 프로젝트에 추가합니다. WithReference 메서드는 연결 정보를 ExampleService 프로젝트에 전달합니다.

중요하다

AddAzureEventHubs호출할 때 암시적으로 AddAzureProvisioning(IDistributedApplicationBuilder)호출합니다. 그러면 앱 시작 중에 Azure 리소스를 동적으로 생성하는 지원이 추가됩니다. 앱은 적절한 구독 및 위치를 구성해야 합니다. 자세한 내용은 로컬 프로비저닝: 구성 참조하세요.

프로비저닝 Bicep 생성됨

Bicep을 처음 접하는 경우, 이는 Azure 리소스를 정의하기 위한 도메인별 언어입니다. .NET .NET Aspire사용하면 Bicep을 직접 작성할 필요가 없으며 프로비전 API는 Bicep을 생성합니다. 앱을 게시하면 생성된 Bicep이 매니페스트 파일과 함께 출력됩니다. Azure Event Hubs 리소스를 추가할 때, 다음의 Bicep 코드가 생성됩니다.

@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location

param sku string = 'Standard'

param principalType string

param principalId string

resource event_hubs 'Microsoft.EventHub/namespaces@2024-01-01' = {
  name: take('event_hubs-${uniqueString(resourceGroup().id)}', 256)
  location: location
  sku: {
    name: sku
  }
  tags: {
    'aspire-resource-name': 'event-hubs'
  }
}

resource event_hubs_AzureEventHubsDataOwner 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: guid(event_hubs.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'f526a384-b230-433a-b45c-95f59c4a2dec'))
  properties: {
    principalId: principalId
    roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'f526a384-b230-433a-b45c-95f59c4a2dec')
    principalType: principalType
  }
  scope: event_hubs
}

resource messages 'Microsoft.EventHub/namespaces/eventhubs@2024-01-01' = {
  name: 'messages'
  parent: event_hubs
}

output eventHubsEndpoint string = event_hubs.properties.serviceBusEndpoint

위의 Bicep은 다음 기본값으로 Azure Event Hubs 리소스를 프로비전하는 모듈입니다.

  • location: 리소스 그룹의 위치입니다.
  • sku: Event Hubs 리소스의 SKU로, 기본적으로 Standard.
  • principalId: Event Hubs 리소스의 주체 ID입니다.
  • principalType: Event Hubs 리소스의 주요 유형입니다.
  • event_hubs: Event Hubs 네임스페이스 리소스입니다.
  • event_hubs_AzureEventHubsDataOwner: 기본 Azure Event Hubs Data Owner 역할에 따라 Event Hubs 리소스 소유자입니다. 자세한 내용은 Azure Event Hubs 데이터 소유자참조하세요.
  • messages: Event Hub 리소스입니다.
  • eventHubsEndpoint: Event Hubs 리소스의 엔드포인트입니다.

생성된 Bicep은 시작 지점이며 특정 요구 사항을 충족하도록 사용자 지정할 수 있습니다.

프로비저닝 인프라 사용자 지정

모든 .NET AspireAzure 리소스는 AzureProvisioningResource 형식의 하위 클래스입니다. 이 형식을 사용하면 Azure API를 사용하여 ConfigureInfrastructure<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure>) 리소스를 구성하는 흐름 API를 제공하여 생성된 Bicep을 사용자 지정할 수 있습니다. 예를 들어 kind, consistencyPolicy, locations등을 구성할 수 있습니다. 다음 예제에서는 AzureAzure Cosmos DB 리소스를 사용자 지정하는 방법을 보여 줍니다.

builder.AddAzureEventHubs("event-hubs")
    .ConfigureInfrastructure(infra =>
    {
        var eventHubs = infra.GetProvisionableResources()
                             .OfType<EventHubsNamespace>()
                             .Single();

        eventHubs.Sku = new EventHubsSku()
        {
            Name = EventHubsSkuName.Premium,
            Tier = EventHubsSkuTier.Premium,
            Capacity = 7,
        };
        eventHubs.PublicNetworkAccess = EventHubsPublicNetworkAccess.SecuredByPerimeter;
        eventHubs.Tags.Add("ExampleKey", "Example value");
    });

앞의 코드는 다음과 같습니다.

Event Hubs 리소스 리소스를 사용자 지정하는 데 사용할 수 있는 더 많은 구성 옵션이 있습니다. 자세한 내용은 Azure.Provisioning.PostgreSql참조하세요. 자세한 내용은 Azure.Provisioning 사용자 지정참조하세요.

기존 Azure Event Hubs 네임스페이스에 연결

연결하려는 기존 Azure Event Hubs 네임스페이스가 있을 수 있습니다. 새 Azure Event Hubs 리소스를 나타내는 대신 앱 호스트에 연결 문자열을 추가할 수 있습니다. 기존 Azure Event Hubs 네임스페이스에 대한 연결을 추가하려면 AddConnectionString 메서드를 호출합니다.

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddConnectionString("event-hubs");

builder.AddProject<Projects.WebApplication>("web")
       .WithReference(eventHubs);

// After adding all resources, run the app...

메모

연결 문자열은 데이터베이스 연결, 메시지 브로커, 엔드포인트 URI 및 기타 서비스를 비롯한 광범위한 연결 정보를 나타내는 데 사용됩니다. .NET .NET Aspire 명명법에서 "연결 문자열"이라는 용어는 모든 종류의 연결 정보를 나타내는 데 사용됩니다.

연결 문자열은 앱 호스트의 구성에서 구성되며, 일반적으로 섹션의 ConnectionStrings아래에 구성됩니다. 앱 호스트는 이 연결 문자열을 환경 변수로 모든 종속 리소스에 삽입합니다. 예를 들면 다음과 같습니다.

{
  "ConnectionStrings": {
    "event-hubs": "{your_namespace}.servicebus.windows.net"
  }
}

종속 리소스는 GetConnectionString 메서드를 호출하고 연결 이름을 매개 변수로 전달하여 삽입된 연결 문자열에 액세스할 수 있습니다. 이 경우 "event-hubs". GetConnectionString API는 IConfiguration.GetSection("ConnectionStrings")[name]의 줄임말입니다.

Event Hub 소비자 그룹 추가

소비자 그룹을 추가하려면 IResourceBuilder<AzureEventHubsResource> 호출을 AddConsumerGroup API에 연결합니다.

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddAzureEventHubs("event-hubs");
var messages = eventHubs.AddHub("messages");
messages.AddConsumerGroup("messagesConsumer");

builder.AddProject<Projects.ExampleService>()
       .WithReference(eventHubs);

// After adding all resources, run the app...

AddConsumerGroup호출하면 messages Event Hub 리소스에 messagesConsumer이라는 소비자 그룹이 있도록 구성됩니다. 이전 추가한 AzureEventHubsResource이 표현하는 Azure Event Hubs 네임스페이스에 소비자 그룹이 생성됩니다. 자세한 내용은 Azure Event Hubs: 소비자 그룹참조하세요.

Azure Event Hubs 에뮬레이터 리소스 추가

.NET Aspire Azure Event Hubs 호스팅 통합은 mcr.microsoft.com/azure-messaging/eventhubs-emulator/latest 컨테이너 이미지를 기반으로 Event Hubs 리소스를 에뮬레이터로 로컬로 실행할 수 있습니다. 이는 개발 및 테스트 목적으로 Event Hubs 리소스를 로컬로 실행하려는 경우 Azure 리소스를 프로비전하거나 기존 Azure Event Hubs 서버에 연결할 필요가 없는 경우에 유용합니다.

Event Hubs 리소스를 에뮬레이터로 실행하려면 RunAsEmulator 메서드를 호출합니다.

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddAzureEventHubs("event-hubs")
                       .RunAsEmulator();

eventHubs.AddHub("messages");

var exampleProject = builder.AddProject<Projects.ExampleProject>()
                            .WithReference(eventHubs);

// After adding all resources, run the app...

앞의 코드는 컨테이너에서 로컬로 실행되도록 Azure Event Hubs 리소스를 구성합니다. 자세한 내용은 Azure Event Hubs 에뮬레이터참조하세요.

Event Hubs 에뮬레이터 컨테이너 구성

컨테이너 리소스에 사용할 수 있는 다양한 구성이 있습니다. 예를 들어 컨테이너의 포트, 데이터 바인딩 탑재, 데이터 볼륨을 구성하거나 모든 것을 재정의하는 전체적인 JSON 구성을 제공할 수 있습니다.

Event Hubs 에뮬레이터 컨테이너 호스트 포트 구성

기본적으로 .NET.NET Aspire구성된 Event Hubs 에뮬레이터 컨테이너는 다음 엔드포인트를 노출합니다.

끝점 이미지 컨테이너 포트 호스트 포트
emulator mcr.microsoft.com/azure-messaging/eventhubs-emulator/latest 5672 동적인

수신 대기 중인 포트는 기본적으로 동적입니다. 컨테이너가 시작되면 포트가 호스트 컴퓨터의 임의 포트에 매핑됩니다. 엔드포인트 포트를 구성하려면 다음 예제와 같이 RunAsEmulator 메서드에서 제공한 컨테이너 리소스 작성기 및 WithHostPort(IResourceBuilder<AzureEventHubsEmulatorResource>, Nullable<Int32>) 대한 호출을 연결합니다.

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddAzureEventHubs("event-hubs")
                       .RunAsEmulator(emulator =>
                       {
                           emulator.WithHostPort(7777);
                       });

eventHubs.AddHub("messages");

builder.AddProject<Projects.ExampleService>()
       .WithReference(eventHubs);

// After adding all resources, run the app...

앞의 코드는 포트 7777수신하도록 Azure 이벤트 에뮬레이터 컨테이너의 기존 emulator 엔드포인트를 구성합니다. Azure 이벤트 에뮬레이터 컨테이너의 포트는 다음 표와 같이 호스트 포트에 매핑됩니다.

엔드포인트 이름 포트 매핑(container:host)
emulator 5672:7777
데이터 볼륨을 사용하여 Event Hubs 에뮬레이터 추가

Event Hubs 에뮬레이터 리소스에 데이터 볼륨을 추가하려면 Event Hubs 에뮬레이터 리소스에서 WithDataVolume 메서드를 호출합니다.

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddAzureEventHubs("event-hubs")
                       .RunAsEmulator(emulator =>
                       {
                           emulator.WithDataVolume();
                       });

eventHubs.AddHub("messages");

builder.AddProject<Projects.ExampleService>()
       .WithReference(eventHubs);

// After adding all resources, run the app...

데이터 볼륨은 Event Hubs 에뮬레이터 데이터를 컨테이너의 수명 주기 외부에 유지하는 데 사용됩니다. 데이터 볼륨은 컨테이너의 /data 경로에 탑재됩니다. name 매개 변수 집합을 제공하지 않으면 이름이 임의로 생성됩니다. 데이터 볼륨에 관한 추가 정보 및바인드 마운트보다 선호되는 이유에 대한 설명은 문서: 볼륨를 참조하세요.

데이터 바인드 마운트를 사용하여 Event Hubs 에뮬레이터 추가

다음 예제와 같이 Event Hubs 에뮬레이터 컨테이너에 바인딩 탑재를 추가하고 WithDataBindMount API에 대한 호출을 연결합니다.

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddAzureEventHubs("event-hubs")
                       .RunAsEmulator(emulator =>
                       {
                           emulator.WithDataBindMount("/path/to/data");
                       });

eventHubs.AddHub("messages");

builder.AddProject<Projects.ExampleService>()
       .WithReference(eventHubs);

// After adding all resources, run the app...

중요하다

데이터 바인드 마운트볼륨에 비해 기능이 제한적이며, 성능, 이식성 및 보안이 더 뛰어나 프로덕션 환경에 더 적합합니다. 그러나 바인딩 탑재를 사용하면 호스트 시스템의 파일에 직접 액세스하고 수정할 수 있으므로 실시간 변경이 필요한 개발 및 테스트에 적합합니다.

데이터 바인딩 탑재는 호스트 컴퓨터의 파일 시스템을 사용하여 컨테이너를 다시 시작할 때 Azure Event Hubs 에뮬레이터 리소스 데이터를 유지합니다. 데이터 바인딩 탑재는 컨테이너의 호스트 컴퓨터에서 /path/to/data 경로에 탑재됩니다. 데이터 바인드 마운트에 대한 자세한 내용은 Docker 문서: 바인드 마운트를 참조하세요.

Event Hubs 에뮬레이터 컨테이너 JSON 구성하기

Event Hubs 에뮬레이터 컨테이너는 기본 config.json 파일로 실행됩니다. 이 파일을 완전히 재정의하거나 JSON 형식으로 구성된 JsonNode 구성을 업데이트할 수 있습니다.

사용자 지정 JSON 구성 파일을 제공하려면 WithConfigurationFile(IResourceBuilder<AzureEventHubsEmulatorResource>, String) 메서드를 호출합니다.

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddAzureEventHubs("event-hubs")
                       .RunAsEmulator(emulator =>
                       {
                           emulator.WithConfigurationFile("./messaging/custom-config.json");
                       });

eventHubs.AddHub("messages");

builder.AddProject<Projects.ExampleService>()
       .WithReference(eventHubs);

// After adding all resources, run the app...

위의 코드는 ./messaging/custom-config.json있는 사용자 지정 JSON 구성 파일을 사용하도록 Event Hubs 에뮬레이터 컨테이너를 구성합니다. 이 파일은 컨테이너의 /Eventhubs_Emulator/ConfigFiles/Config.json 경로에 읽기 전용 파일로 탑재됩니다. 대신 기본 구성에서 특정 속성을 재정의하려면 WithConfiguration(IResourceBuilder<AzureEventHubsEmulatorResource>, Action<JsonNode>) 메서드를 호출합니다.

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddAzureEventHubs("event-hubs")
                       .RunAsEmulator(emulator =>
                       {
                           emulator.WithConfiguration(
                               (JsonNode configuration) =>
                               {
                                   var userConfig = configuration["UserConfig"];
                                   var ns = userConfig["NamespaceConfig"][0];
                                   var firstEntity = ns["Entities"][0];
                                   
                                   firstEntity["PartitionCount"] = 5;
                               });
                       });

eventHubs.AddHub("messages");

builder.AddProject<Projects.ExampleService>()
       .WithReference(eventHubs);

// After adding all resources, run the app...

위의 코드는 기본 구성에서 UserConfig 노드를 검색합니다. 그런 다음 첫 번째 엔터티의 PartitionCount5로 업데이트합니다.

호스팅 통합 상태 검사

Azure Event Hubs 호스팅 통합은 Event Hubs 리소스에 대한 상태 검사를 자동으로 추가합니다. 상태 검사는 Event Hubs가 실행 중이고 연결이 설정될 수 있는지 확인합니다.

호스팅 통합은 📦 AspNetCore.HealthChecks에 의존합니다.Azure. Messaging.EventHubs NuGet 패키지입니다.

Client 통합

.NET Aspire Azure Event Hubs 클라이언트 통합을 시작하려면 클라이언트 소비 프로젝트, 즉 Event Hubs 클라이언트를 사용하는 애플리케이션에 대한 프로젝트에서 📦AspireAzure.Messaging.EventHubs NuGet 패키지를 설치합니다.

dotnet add package Aspire.Azure.Messaging.EventHubs

지원되는 Event Hubs 클라이언트 유형

다음 Event Hub 클라이언트는 해당 옵션 및 설정 클래스와 함께 라이브러리에서 지원됩니다.

Azure 클라이언트 유형 Azure 옵션 클래스 .NET .NET Aspire 설정 클래스
EventHubProducerClient EventHubProducerClientOptions AzureMessagingEventHubsProducerSettings
EventHubBufferedProducerClient EventHubBufferedProducerClientOptions AzureMessagingEventHubsBufferedProducerSettings
EventHubConsumerClient EventHubConsumerClientOptions AzureMessagingEventHubsConsumerSettings
EventProcessorClient EventProcessorClientOptions AzureMessagingEventHubsProcessorSettings
PartitionReceiver PartitionReceiverOptions AzureMessagingEventHubsPartitionReceiverSettings

클라이언트 형식은 해당 옵션 클래스와 마찬가지로 .NETAzure SDK에서 가져옵니다. 설정 클래스는 .NET.NET Aspire에 의해 제공됩니다. 설정 클래스는 클라이언트 인스턴스를 구성하는 데 사용됩니다.

Event Hubs 생산자 클라이언트 추가

클라이언트 사용 프로젝트의 Program.cs 파일에서, 모든 AddAzureEventHubProducerClient에 대해 IHostApplicationBuilder 확장 메서드를 호출하여 EventHubProducerClient을(를) 종속성 주입 컨테이너를 통해 사용할 수 있도록 등록합니다. 메서드는 연결 이름 매개 변수를 사용합니다.

builder.AddAzureEventHubProducerClient(connectionName: "event-hubs");

팁 (조언)

connectionName 매개 변수는 앱 호스트 프로젝트에 Event Hubs 리소스를 추가할 때 사용되는 이름과 일치해야 합니다. 자세한 내용은 Azure Event Hubs 리소스추가를 참조하세요.

EventHubProducerClient추가한 후 종속성 주입을 사용하여 클라이언트 인스턴스를 검색할 수 있습니다. 예를 들어 예제 서비스에서 데이터 원본 개체를 검색하려면 생성자 매개 변수로 정의하고 ExampleService 클래스가 종속성 주입 컨테이너에 등록되어 있는지 확인합니다.

public class ExampleService(EventHubProducerClient client)
{
    // Use client...
}

자세한 내용은 다음을 참조하세요.

고려할 추가 API

클라이언트 통합은 클라이언트 인스턴스를 구성하는 추가 API를 제공합니다. Event Hubs 클라이언트를 등록해야 하는 경우 다음 API를 고려합니다.

Azure 클라이언트 유형 등록 API
EventHubProducerClient AddAzureEventHubProducerClient
EventHubBufferedProducerClient AddAzureEventHubBufferedProducerClient
EventHubConsumerClient AddAzureEventHubConsumerClient
EventProcessorClient AddAzureEventProcessorClient
PartitionReceiver AddAzurePartitionReceiverClient

앞서 언급한 모든 API에는 클라이언트 인스턴스를 구성하는 선택적 매개 변수가 포함됩니다.

키 지정된 Event Hubs 생산자 클라이언트 추가

여러 EventHubProducerClient 인스턴스를 서로 다른 연결 이름으로 등록하려는 경우가 있을 수 있습니다. 키 지정된 Event Hubs 클라이언트를 등록하려면 AddKeyedAzureServiceBusClient 메서드를 호출합니다.

builder.AddKeyedAzureEventHubProducerClient(name: "messages");
builder.AddKeyedAzureEventHubProducerClient(name: "commands");

중요하다

키 지정된 서비스를 사용하는 경우 Event Hubs 리소스가 두 개의 명명된 허브(messagescommands대해 하나씩)를 구성해야 합니다.

그런 다음 종속성 주입을 사용하여 클라이언트 인스턴스를 검색할 수 있습니다. 예를 들어 서비스에서 클라이언트를 검색하려면 다음을 수행합니다.

public class ExampleService(
    [KeyedService("messages")] EventHubProducerClient messagesClient,
    [KeyedService("commands")] EventHubProducerClient commandsClient)
{
    // Use clients...
}

자세한 내용은 Keyed 서비스에 대한 정보를 .NET에서 참조하세요.

고려할 추가 키 API

클라이언트 통합은 키 지정된 클라이언트 인스턴스를 구성하는 추가 API를 제공합니다. 키 지정된 Event Hubs 클라이언트를 등록해야 하는 경우 다음 API를 고려합니다.

Azure 클라이언트 유형 등록 API
EventHubProducerClient AddKeyedAzureEventHubProducerClient
EventHubBufferedProducerClient AddKeyedAzureEventHubBufferedProducerClient
EventHubConsumerClient AddKeyedAzureEventHubConsumerClient
EventProcessorClient AddKeyedAzureEventProcessorClient
PartitionReceiver AddKeyedAzurePartitionReceiverClient

앞서 언급한 모든 API에는 클라이언트 인스턴스를 구성하는 선택적 매개 변수가 포함됩니다.

구성

.NET Aspire Azure Event Hubs 라이브러리는 프로젝트의 요구 사항 및 규칙에 따라 Azure Event Hubs 연결을 구성하는 여러 옵션을 제공합니다. FullyQualifiedNamespace 또는 ConnectionString 중 하나가 반드시 제공되어야 합니다.

연결 문자열 사용

ConnectionStrings 구성 섹션에서 연결 문자열을 사용하는 경우 builder.AddAzureEventHubProducerClient() 및 기타 지원되는 Event Hubs 클라이언트를 호출할 때 연결 문자열의 이름을 제공합니다. 이 예제에서 연결 문자열은 EntityPath 속성을 포함하지 않으므로 설정 콜백에서 EventHubName 속성을 설정해야 합니다.

builder.AddAzureEventHubProducerClient(
    "event-hubs",
    static settings =>
    {
        settings.EventHubName = "MyHub";
    });

그런 다음 ConnectionStrings 구성 섹션에서 연결 정보를 검색합니다. 두 가지 연결 형식이 지원됩니다.

FQN(정규화된 네임스페이스)

권장되는 방법은 AzureMessagingEventHubsSettings.Credential 속성과 함께 작동하는 정규화된 네임스페이스를 사용하여 연결을 설정하는 것입니다. 자격 증명이 구성되지 않은 경우 DefaultAzureCredential 사용됩니다.

{
  "ConnectionStrings": {
    "event-hubs": "{your_namespace}.servicebus.windows.net"
  }
}

연결 문자열

대안적으로, 연결 문자열을 사용할 수 있습니다.

{
  "ConnectionStrings": {
    "event-hubs": "Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=accesskeyname;SharedAccessKey=accesskey;EntityPath=MyHub"
  }
}

구성 공급자 사용

.NET Aspire Azure Event Hubs 라이브러리는 Microsoft.Extensions.Configuration지원합니다. AzureMessagingEventHubsSettings 키 접두사를 사용하여 구성에서 EventProcessorClientOptions 및 연결된 옵션(예: Aspire:Azure:Messaging:EventHubs:)을 로드한 다음 사용 중인 특정 클라이언트의 이름을 로드합니다. 예를 들어, appsettings.json의 몇 가지 옵션을 구성하는 EventProcessorClient를 고려해 보세요.

{
  "Aspire": {
    "Azure": {
      "Messaging": {
        "EventHubs": {
          "EventProcessorClient": {
            "EventHubName": "MyHub",
            "ClientOptions": {
              "Identifier": "PROCESSOR_ID"
            }
          }
        }
      }
    }
  }
}

Action<IAzureClientBuilder<EventProcessorClient, EventProcessorClientOptions>> configureClientBuilder 메서드의 선택적 AddAzureEventProcessorClient 매개 변수를 사용하여 옵션 유형을 설정할 수도 있습니다. 예를 들어 이 클라이언트에 대한 프로세서의 클라이언트 ID를 설정하려면 다음을 수행합니다.

builder.AddAzureEventProcessorClient(
    "event-hubs",
    configureClientBuilder: clientBuilder => clientBuilder.ConfigureOptions(
        options => options.Identifier = "PROCESSOR_ID"));

관찰 가능성 및 원격 분석

통합은 로깅, 추적 및 메트릭 구성을 자동으로 설정하며, 이를 관찰성핵심 요소라고도 . 통합 관찰 가능성 및 원격 분석에 대한 자세한 내용은 .NET.NET Aspire 통합 개요참조하세요. 지원 서비스에 따라 일부 통합은 이러한 기능 중 일부만 지원할 수 있습니다. 예를 들어 일부 통합은 로깅 및 추적을 지원하지만 메트릭은 지원하지 않습니다. 구성 섹션에 제시된 기술을 사용하여 원격 분석 기능을 사용하지 않도록 설정할 수도 있습니다.

기록하기

.NET Aspire Azure Event Hubs 통합은 다음 로그 범주를 사용합니다.

  • Azure.Core
  • Azure.Identity

추적

.NET Aspire Azure Event Hubs 통합은 OpenTelemetry를 사용하여 다음의 추적 활동을 발생시킵니다.

  • Azure.Messaging.EventHubs.*

측정 지표

.NET Aspire Azure Event Hubs 통합은 현재 Azure.NET SDK의 제한 사항으로 인해 기본적으로 메트릭을 지원하지 않습니다. 나중에 변경되는 경우 이 섹션은 해당 변경 내용을 반영하도록 업데이트됩니다.

참고 항목