Delen via


integratie AspireAzure Event Hubs

Inclusief:Hostingintegratie inbegrepen —&— Client integratie inbegrepenClient integratie

Azure Event Hubs is een systeemeigen gegevensstreamingservice in de cloud die miljoenen gebeurtenissen per seconde kan streamen, met lage latentie, van elke bron naar elke bestemming. Met de AspireAzure Event Hubs-integratie kunt u vanuit uw Azure Event Hubs toepassingen verbinding maken met .NET exemplaren.

Hostingintegratie

De AspireAzure Event Hubs hostingintegratie modellen de verschillende Event Hub-resources als de volgende typen:

Als u toegang wilt krijgen tot deze typen en API's voor het uitdrukken ervan in uw AppHost-project , installeert u het 📦Aspire. Hosting.Azure. EventHubs NuGet-pakket:

dotnet add package Aspire.Hosting.Azure.EventHubs

Zie dotnet pakket toevoegen of Pakketafhankelijkheden beheren in .NET toepassingenvoor meer informatie.

Een Azure Event Hubs-resource toevoegen

Als u een AzureEventHubsResource aan uw AppHost-project wilt toevoegen, roept u de methode aan AddAzureEventHubs die een naam oplevert en roept u AddHubhet volgende aan:

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...

Wanneer u een Azure Event Hubs resource toevoegt aan de AppHost, worden andere nuttige API's weergegeven om Event Hub-resources, consumentengroepen, expliciete inrichtingsconfiguratie toe te voegen en het gebruik van de Azure Event Hubs emulator in te schakelen. Met de voorgaande code worden een Azure Event Hubs resource met de naam event-hubs en een Event Hub toegevoegd messages aan het AppHost-project. De methode WithReference geeft de verbindingsgegevens door aan het ExampleService-project.

Belangrijk

Wanneer u AddAzureEventHubsaanroept, wordt impliciet AddAzureProvisioning(IDistributedApplicationBuilder)aangeroepen. Hiermee wordt ondersteuning toegevoegd voor het dynamisch genereren van Azure resources tijdens het opstarten van de app. De app moet het juiste abonnement en de juiste locatie configureren. Zie Lokale inrichting voor meer informatie: Configuratie

Verbinding maken met een bestaande Azure Event Hubs-naamruimte

Mogelijk hebt u een bestaande Azure Event Hubs service waarmee u verbinding wilt maken. U kunt een aanroep aaneenschakelen om aan te geven dat uw AzureEventHubsResource een bestaande resource is.

var builder = DistributedApplication.CreateBuilder(args);

var existingEventHubsName = builder.AddParameter("existingEventHubsName");
var existingEventHubsResourceGroup = builder.AddParameter("existingEventHubsResourceGroup");

var eventHubs = builder.AddAzureEventHubs("event-hubs")
                    .AsExisting(existingEventHubsName, existingEventHubsResourceGroup);

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

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

Belangrijk

Wanneer u , RunAsExistingof methoden aanroept PublishAsExistingom te werken met resources die al aanwezig zijn in uw AsExisting abonnement, moet u bepaalde configuratiewaarden toevoegen aan uw AppHost om ervoor te zorgen dat Azure deze kunnen worden Aspire gevonden. De benodigde configuratiewaarden zijn SubscriptionId, AllowResourceGroupCreation, ResourceGroup en Location. Als u ze niet instelt, worden fouten met ontbrekende configuratie weergegeven in het Aspire dashboard. Zie Configuratie voor meer informatie over het instellen ervan.

Zie Gebruik bestaande resources voor meer informatie over het behandelen van Azure Event Hubs resources als bestaande Azure resources.

Notitie

U kunt ook een verbindingsreeks toevoegen aan de AppHost in plaats van een Azure Event Hubs resource weer te geven. Deze benadering is zwak getypt en werkt niet met roltoewijzingen of infrastructuuraanpassingen. Voor meer informatie, zie Bestaande Azure resources toevoegen met verbindingsreeksen.

Event Hub-consumentengroep toevoegen

Als u een consumentengroep wilt toevoegen, koppelt u een aanroep van een IResourceBuilder<AzureEventHubsResource> aan de 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...

Wanneer u AddConsumerGroupaanroept, wordt uw messages Event Hub-resource geconfigureerd voor een consumentengroep met de naam messagesConsumer. De consumentengroep wordt gemaakt in de Azure Event Hubs naamruimte die wordt vertegenwoordigd door de AzureEventHubsResource die u eerder hebt toegevoegd. Zie Azure Event Hubsvoor meer informatie: Consumentengroepen.

Resource voor Azure Event Hubs emulator toevoegen

De AspireAzure Event Hubs hostingintegratie ondersteunt het lokaal uitvoeren van de Event Hubs-resource als een emulator, op basis van de mcr.microsoft.com/azure-messaging/eventhubs-emulator/latest containerinstallatiekopieën. Dit is handig voor situaties waarin u de Event Hubs-resource lokaal wilt uitvoeren voor ontwikkelings- en testdoeleinden, zodat u geen Azure resource hoeft in te richten of verbinding wilt maken met een bestaande Azure Event Hubs-server.

Als u de Event Hubs-resource wilt uitvoeren als een emulator, roept u de RunAsEmulator methode aan:

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...

Met de voorgaande code wordt een Azure Event Hubs-resource geconfigureerd om lokaal in een container te worden uitgevoerd. Zie Azure Event Hubs Emulatorvoor meer informatie.

Event Hubs Emulator-container configureren

Er zijn verschillende configuraties beschikbaar voor containerbronnen, bijvoorbeeld: u kunt de poorten van de container configureren, gegevensbindingen, gegevensvolumes of een wholistische JSON configuratie bieden die alles overschrijft.

Containerhostpoort voor Event Hubs-emulator configureren

Standaard worden de volgende eindpunten weergegeven in de Event Hubs Emulator-container wanneer deze is geconfigureerd door Aspire:

Eindpunt Afbeelding Containerhaven Host-poort
emulator mcr.microsoft.com/azure-messaging/eventhubs-emulator/latest 5672 dynamisch

De poort waarop wordt geluisterd, is standaard dynamisch. Wanneer de container wordt gestart, wordt de poort toegewezen aan een willekeurige poort op de hostcomputer. Als u de eindpuntpoort wilt configureren, koppel de aanroepen met behulp van de containerresourcebouwer die wordt geleverd door de RunAsEmulator methode en vervolgens de WithHostPort(IResourceBuilder<AzureEventHubsEmulatorResource>, Nullable<Int32>), zoals in het volgende voorbeeld wordt weergegeven.

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...

Met de voorgaande code wordt het bestaande Azure-eindpunt van de emulator Event Emulator-container geconfigureerd om te luisteren op poort 7777. De poort van de Azure Event Emulator-container is toegewezen aan de hostpoort, zoals wordt weergegeven in de volgende tabel:

Eindpuntnaam Poorttoewijzing (container:host)
emulator 5672:7777
Event Hubs-emulator toevoegen met gegevensvolume

Als u een gegevensvolume wilt toevoegen aan de Event Hubs-emulatorresource, roept u de WithDataVolume methode aan op de Event Hubs Emulator-resource:

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...

Het gegevensvolume wordt gebruikt om de Event Hubs-emulatorgegevens buiten de levenscyclus van de container te behouden. Het datavolume is gekoppeld aan het /data pad in de container. Er wordt willekeurig een naam gegenereerd, tenzij u de name parameter opgeeft. Zie de voor meer informatie over gegevensvolumes en waarom ze de voorkeur krijgen boven Docker.

Event Hubs-emulator toevoegen met bind-mount van gegevens

Om een bindmount toe te voegen aan de Event Hubs-emulatorcontainer, moet u een aanroep naar de WithDataBindMount-API ketenen, zoals weergegeven in het volgende voorbeeld:

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...

Belangrijk

Data koppelpunten hebben een beperkte functionaliteit vergeleken met volumes, die betere prestaties, draagbaarheid en beveiliging bieden, waardoor ze geschikter zijn voor productieomgevingen. Bind mounts bieden echter directe toegang tot en wijziging van bestanden op het hostsysteem, wat ideaal is voor ontwikkeling en testen waarbij wijzigingen in real-time nodig zijn.

Gegevensbind-mounts zijn afhankelijk van het bestandssysteem van de hostcomputer om de Azure Event Hubs-emulatorbrongegevens bij herstarten van de container te behouden. De data-bind-mount is aangekoppeld op het /path/to/data pad op de hostmachine in de container. Voor meer informatie over gegevensbindingskoppelingen, zie Docker docs: Bindingskoppelingen.

De configuratie van de Event Hubs-emulatorcontainer instellen JSON

De Event Hubs Emulator-container wordt uitgevoerd met een standaardbestand config.json. U kunt dit bestand volledig overschrijven of de JSON-configuratie bijwerken met een JsonNode weergave van de configuratie.

Als u een aangepast JSON-configuratiebestand wilt opgeven, roept u de methode WithConfigurationFile(IResourceBuilder<AzureEventHubsEmulatorResource>, String) aan:

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...

Met de voorgaande code wordt de Event Hubs Emulator-container geconfigureerd voor het gebruik van een aangepast JSON configuratiebestand dat zich in ./messaging/custom-config.jsonbevindt. Dit wordt gekoppeld aan het /Eventhubs_Emulator/ConfigFiles/Config.json pad in de container als een alleen-lezen-bestand. Als u in plaats daarvan specifieke eigenschappen in de standaardconfiguratie wilt overschrijven, roept u de methode WithConfiguration(IResourceBuilder<AzureEventHubsEmulatorResource>, Action<JsonNode>) aan:

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...

Met de voorgaande code wordt het UserConfig knooppunt opgehaald uit de standaardconfiguratie. Vervolgens wordt de PartitionCount van de eerste entiteit bijgewerkt naar een 5.

Provisioning-gegenereerde Bicep

Als je nieuw bent met Bicep, is dit een domeinspecifieke taal voor het definiëren van Azure-bronnen. Met Aspire hoeft u Bicep niet handmatig te schrijven, omdat de voorzienings-API's Bicep voor u genereren. Wanneer u uw app publiceert, wordt de gegenereerde Bicep samen met het manifestbestand weergegeven. Wanneer u een Azure Event Hubs resource toevoegt, wordt de volgende Bicep gegenereerd:

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

param sku string = 'Standard'

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

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

output eventHubsEndpoint string = event_hubs.properties.serviceBusEndpoint

output name string = event_hubs.name

Het voorafgaande Bicep is een module die een Azure Event Hubs resource inricht. Daarnaast worden roltoewijzingen gemaakt voor de Azure resource in een afzonderlijke module:

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

param event_hubs_outputs_name string

param principalType string

param principalId string

resource event_hubs 'Microsoft.EventHub/namespaces@2024-01-01' existing = {
  name: event_hubs_outputs_name
}

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
}

De gegenereerde Bicep is een beginpunt en wordt beïnvloed door wijzigingen aan de voorzieningsinfrastructuur in C#. Aanpassingen aan het Bicep-bestand zullen direct overschreven worden, dus breng wijzigingen aan via de C#-inrichtings-API's zodat ze weerspiegeld worden in de gegenereerde bestanden.

Voorzieningsinfrastructuur personaliseren

Alle AspireAzure resources zijn subklassen van het AzureProvisioningResource type. Met dit type kunt u de gegenereerde Bicep aanpassen door een vloeiende API te bieden waarmee u de Azure-resources kunt configureren, met behulp van de ConfigureInfrastructure<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure>)-API. U kunt bijvoorbeeld de kind, consistencyPolicy, locationsen meer configureren. In het volgende voorbeeld ziet u hoe u de AzureAzure Cosmos DB-resource aanpast:

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");
    });

De voorgaande code:

Er zijn nog veel meer configuratieopties beschikbaar om de Event Hubs-resourceresource aan te passen. Zie Azure.Provisioning.PostgreSqlvoor meer informatie. Zie Azure.Provisioning aanpassingvoor meer informatie.

Gezondheidscontroles van hostingintegratie

De Azure Event Hubs hostingintegratie voegt automatisch een statuscontrole toe voor de Event Hubs-resource. De statuscontrole verifieert of Event Hubs in werking is en of er een verbinding mee kan worden gemaakt.

De hostingintegratie is afhankelijk van de 📦 AspNetCore.HealthChecks.Azure. Messaging.EventHubs NuGet-pakket.

Client integratie

Installeer de AspireAzure Event Hubsom te beginnen met de 📦Aspire-clientintegratie. Voeg hetAzure.Messaging.EventHubs NuGet-pakket toe aan het project dat de applicatie-klant gebruikt, dat wil zeggen, het project voor de toepassing die de Event Hubs-client gebruikt.

dotnet add package Aspire.Azure.Messaging.EventHubs

Ondersteunde Event Hubs-clienttypen

De volgende Event Hub-clients worden ondersteund door de bibliotheek, samen met de bijbehorende opties en instellingenklassen:

Azure cliënttype opties klasse Azure Aspire instellingenklasse
EventHubProducerClient EventHubProducerClientOptions AzureMessagingEventHubsProducerSettings
EventHubBufferedProducerClient EventHubBufferedProducerClientOptions AzureMessagingEventHubsBufferedProducerSettings
EventHubConsumerClient EventHubConsumerClientOptions AzureMessagingEventHubsConsumerSettings
EventProcessorClient EventProcessorClientOptions AzureMessagingEventHubsProcessorSettings
PartitionReceiver-klasse PartitionReceiverOptions AzureMessagingEventHubsPartitionReceiverSettings

De clienttypen zijn afkomstig van de Azure SDK voor .NET, net als de bijbehorende optiesklassen. De instellingenklassen worden geleverd door de Aspire. De instellingenklassen worden gebruikt om de clientinstanties te configureren.

Een Event Hubs-producentclient toevoegen

Roep in het Program.cs bestand van het clientgebruikte project de AddAzureEventHubProducerClient-extensiemethode aan op elke IHostApplicationBuilder om een EventHubProducerClient te registreren voor gebruik via de container voor afhankelijkheidsinjectie. De methode gebruikt een verbindingsnaamparameter.

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

Hint

De connectionName parameter moet overeenkomen met de naam die wordt gebruikt bij het toevoegen van de Event Hubs-resource in het AppHost-project. Zie Een Azure Event Hubs-resource toevoegenvoor meer informatie.

Nadat u de EventHubProducerClienthebt toegevoegd, kunt u de clientinstantie ophalen met behulp van afhankelijkheidsinjectie. Als u bijvoorbeeld uw gegevensbronobject wilt ophalen uit een voorbeeldservice, definieert u het als een constructorparameter en zorgt u ervoor dat de klasse ExampleService is geregistreerd bij de container voor afhankelijkheidsinjectie:

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

Zie voor meer informatie:

Aanvullende API's om rekening mee te houden

De clientintegratie biedt aanvullende API's voor het configureren van clientexemplaren. Houd rekening met de volgende API's wanneer u een Event Hubs-client moet registreren:

Azure cliënttype Registratie-API
EventHubProducerClient AddAzureEventHubProducerClient
EventHubBufferedProducerClient AddAzureEventHubBufferedProducerClient
EventHubConsumerClient AddAzureEventHubConsumerClient
EventProcessorClient AddAzureEventProcessorClient
PartitionReceiver-klasse AddAzurePartitionReceiverClient

Alle bovengenoemde API's bevatten optionele parameters voor het configureren van de clientinstanties.

Event Hubs-producentclient met sleutel toevoegen

Er kunnen situaties zijn waarin u meerdere EventHubProducerClient exemplaren met verschillende verbindingsnamen wilt registreren. Als u keyed Event Hubs-clients wilt registreren, roept u de methode AddKeyedAzureServiceBusClient aan:

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

Belangrijk

Wanneer u sleutelservices gebruikt, wordt verwacht dat uw Event Hubs-resource twee benoemde hubs heeft geconfigureerd, één voor de messages en één voor de commands.

Vervolgens kunt u de clientexemplaren ophalen met behulp van afhankelijkheidsinjectie. Bijvoorbeeld om de clients op te halen uit een service:

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

Zie Keyed-services in .NETvoor meer informatie.

Aanvullende sleutel-API's om rekening mee te houden

De client integratie biedt extra API's voor het configureren van clientinstanties met een sleutel. Houd rekening met de volgende API's wanneer u een keyed Event Hubs-client moet registreren:

Azure cliënttype Registratie-API
EventHubProducerClient AddKeyedAzureEventHubProducerClient
EventHubBufferedProducerClient AddKeyedAzureEventHubBufferedProducerClient
EventHubConsumerClient AddKeyedAzureEventHubConsumerClient
EventProcessorClient AddKeyedAzureEventProcessorClient
PartitionReceiver-klasse AddKeyedAzurePartitionReceiverClient

Alle bovengenoemde API's bevatten optionele parameters voor het configureren van de clientinstanties.

Configuratie

De AspireAzure Event Hubs-bibliotheek biedt meerdere opties voor het configureren van de Azure Event Hubs verbinding op basis van de vereisten en conventies van uw project. Een FullyQualifiedNamespace of een ConnectionString moet geleverd worden.

Een verbindingsreeks gebruiken

Wanneer u een verbindingsreeks uit de sectie ConnectionStrings configuratie gebruikt, geeft u de naam van de verbindingsreeks op bij het aanroepen van builder.AddAzureEventHubProducerClient() en andere ondersteunde Event Hubs-clients. In dit voorbeeld bevat de verbindingsreeks niet de eigenschap EntityPath, dus moet de eigenschap EventHubName worden ingesteld in de callback-instellingen:

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

Vervolgens worden de verbindingsgegevens opgehaald uit de ConnectionStrings configuratiesectie. Er worden twee verbindingsindelingen ondersteund:

Fully Qualified Namespace (FQN)

De aanbevolen methode is om een volledig gekwalificeerde naamruimte te gebruiken, die werkt met de eigenschap AzureMessagingEventHubsSettings.Credential om een verbinding tot stand te brengen. Als er geen referentiegegevens zijn geconfigureerd, wordt de DefaultAzureCredential gebruikt.

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

Verbindingsreeks

U kunt ook een verbindingsreeks gebruiken:

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

Configuratieproviders gebruiken

De AspireAzure Event Hubs-bibliotheek ondersteunt Microsoft.Extensions.Configuration. Het laadt de AzureMessagingEventHubsSettings en de bijbehorende opties, bijvoorbeeld EventProcessorClientOptions, uit de configuratie met behulp van het Aspire:Azure:Messaging:EventHubs: sleutelvoorvoegsel, gevolgd door de naam van de specifieke client die wordt gebruikt. Denk bijvoorbeeld aan de appsettings.json waarmee enkele van de opties voor een EventProcessorClientworden geconfigureerd:

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

Zie Azure Event Hubsvoor het volledige JSON clientintegratieschema Aspire.Azure. Messaging.EventHubs/ConfigurationSchema.json.

Benoemde configuratie gebruiken

De AspireAzure Event Hubs bibliotheek ondersteunt benoemde configuratie, waarmee u meerdere exemplaren van hetzelfde clienttype met verschillende instellingen kunt configureren. De benoemde configuratie maakt gebruik van de verbindingsnaam als een sleutel in de sectie specifieke clientconfiguratie.

{
  "Aspire": {
    "Azure": {
      "Messaging": {
        "EventHubs": {
          "EventProcessorClient": {
            "processor1": {
              "EventHubName": "MyHub1",
              "ClientOptions": {
                "Identifier": "PROCESSOR_1"
              }
            },
            "processor2": {
              "EventHubName": "MyHub2",
              "ClientOptions": {
                "Identifier": "PROCESSOR_2"
              }
            }
          }
        }
      }
    }
  }
}

In dit voorbeeld kunnen de processor1 en processor2 verbindingsnamen worden gebruikt wanneer AddAzureEventProcessorClient wordt aangeroepen:

builder.AddAzureEventProcessorClient("processor1");
builder.AddAzureEventProcessorClient("processor2");

Benoemde configuratie heeft voorrang op de configuratie op het hoogste niveau. Als beide zijn opgegeven, overschrijven de instellingen van de benoemde configuratie de instellingen op het hoogste niveau.

U kunt ook het type Opties instellen met behulp van de optionele Action<IAzureClientBuilder<EventProcessorClient, EventProcessorClientOptions>> configureClientBuilder parameter van de AddAzureEventProcessorClient methode. Als u bijvoorbeeld de client-id van de processor voor deze client wilt instellen:

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

Waarneembaarheid en telemetrie

Aspire Integraties stellen automatisch configuraties voor logboekregistratie, tracering en metrische gegevens in, die ook wel de pijlers van waarneembaarheid worden genoemd. Zie het overzicht van integratieobserveerbaarheid en telemetrie voor meer informatie over integratieobserveerbaarheid en telemetrieAspire. Afhankelijk van de back-upservice ondersteunen sommige integraties mogelijk slechts enkele van deze functies. Sommige integraties ondersteunen bijvoorbeeld logboekregistratie en tracering, maar geen metrische gegevens. Telemetriefuncties kunnen ook worden uitgeschakeld met behulp van de technieken die worden weergegeven in de sectie Configuratie.

Loggen

De AspireAzure Event Hubs-integratie maakt gebruik van de volgende logboekcategorieën:

  • Azure.Core
  • Azure.Identity

Opsporing

De AspireAzure Event Hubs-integratie verzendt de volgende traceringsactiviteiten met behulp van OpenTelemetry:

  • Azure.Messaging.EventHubs.*

Statistieken

De integratie van AspireAzure Event Hubs biedt momenteel geen ondersteuning voor metrische gegevens vanwege beperkingen met de Azure SDK voor .NET. Als deze wijzigingen in de toekomst worden gewijzigd, wordt deze sectie bijgewerkt om deze wijzigingen weer te geven.

Zie ook