Delen via


Partities dynamisch toevoegen aan een Event Hub (Apache Kafka-onderwerp)

Event Hubs daarentegen biedt streaming van berichten via een model op basis van gepartitioneerd gebruik, waarbij elke consumer slechts een specifieke subset of partitie van de berichtenstroom leest. Dit patroon maakt een horizontale schaal voor de verwerking van gebeurtenissen mogelijk en biedt andere stroomgerichte functies die niet beschikbaar zijn in wachtrijen en onderwerpen. Een partitie is een geordende reeks gebeurtenissen die in een Event Hub wordt bewaard. Als er nieuwere gebeurtenissen plaatsvinden, worden deze toegevoegd aan het einde van deze reeks. Zie Partities voor meer informatie over partities in het algemeen

U kunt het aantal partities opgeven op het moment dat u een Event Hub maakt. In sommige scenario's moet u mogelijk partities toevoegen nadat de Event Hub is gemaakt. In dit artikel wordt beschreven hoe u dynamisch partities toevoegt aan een bestaande Event Hub.

Belangrijk

Dynamische toevoegingen van partities zijn alleen beschikbaar in premium - en toegewezen lagen van Event Hubs.

Notitie

Voor Apache Kafka-clients wordt een Event Hub toegewezen aan een Kafka-onderwerp. Zie De conceptuele toewijzing van Kafka en Event Hubs voor meer toewijzingen tussen Azure Event Hubs en Apache Kafka

Het aantal partities bijwerken

In deze sectie wordt beschreven hoe u het aantal partities van een Event Hub op verschillende manieren bijwerkt (PowerShell, CLI enzovoort).

Powershell

Gebruik de PowerShell-opdracht Set-AzEventHub om partities in een Event Hub bij te werken.

Set-AzEventHub -ResourceGroupName MyResourceGroupName -Namespace MyNamespaceName -Name MyEventHubName -partitionCount 12

CLI

Gebruik de CLI-opdracht az eventhubs eventhub update om partities bij te werken in een Event Hub.

az eventhubs eventhub update --resource-group MyResourceGroupName --namespace-name MyNamespaceName --name MyEventHubName --partition-count 12

Resource Manager-sjabloon

Werk de waarde van de eigenschap in de partitionCount Resource Manager-sjabloon bij en implementeer de sjabloon opnieuw om de resource bij te werken.

    {
        "apiVersion": "2017-04-01",
        "type": "Microsoft.EventHub/namespaces/eventhubs",
        "name": "[concat(parameters('namespaceName'), '/', parameters('eventHubName'))]",
        "location": "[parameters('location')]",
        "dependsOn": [
            "[resourceId('Microsoft.EventHub/namespaces', parameters('namespaceName'))]"
        ],
        "properties": {
            "messageRetentionInDays": 7,
            "partitionCount": 12
        }
    }

Apache Kafka

Gebruik de AlterTopics API (bijvoorbeeld via het CLI-hulpprogramma kafka-topics ) om het aantal partities te verhogen. Zie Kafka-onderwerpen wijzigen voor meer informatie.

Event Hubs-clients

Laten we eens kijken hoe Event Hubs-clients zich gedragen wanneer het aantal partities wordt bijgewerkt op een Event Hub.

Wanneer u een partitie toevoegt aan een bestaande even hub, ontvangt de Event Hub-client een MessagingException van de service die de clients informeert dat entiteitsmetagegevens (entiteit is uw Event Hub en metagegevens de partitiegegevens zijn) is gewijzigd. De clients zullen de AMQP-koppelingen automatisch opnieuw openen, waarna de gewijzigde metagegevensgegevens worden opgehaald. De clients werken vervolgens normaal.

Afzender-/producentclients

Event Hubs biedt drie opties voor afzenders:

  • Partitiezender : in dit scenario verzenden clients gebeurtenissen rechtstreeks naar een partitie. Hoewel partities identificeerbaar zijn en gebeurtenissen rechtstreeks naar deze partities kunnen worden verzonden, raden we dit patroon niet aan. Het toevoegen van partities heeft geen invloed op dit scenario. U wordt aangeraden toepassingen opnieuw te starten, zodat ze nieuw toegevoegde partities kunnen detecteren.
  • Afzender van partitiesleutel: in dit scenario verzenden clients de gebeurtenissen met een sleutel, zodat alle gebeurtenissen die tot die sleutel behoren, in dezelfde partitie terechtkomen. In dit geval hashes de service de sleutel en routes naar de bijbehorende partitie. De update van het aantal partities kan problemen met de volgorde veroorzaken vanwege een hashwijziging. Zorg er dus voor dat uw toepassing alle gebeurtenissen van bestaande partities verbruikt voordat u het aantal partities verhoogt.
  • Round robin-afzender (standaard): in dit scenario rondt de Event Hubs-service de gebeurtenissen over partities af en maakt ook gebruik van een taakverdelingsalgoritme. De Event Hubs-service is op de hoogte van wijzigingen in het aantal partities en wordt binnen enkele seconden na het wijzigen van het aantal partities verzonden naar nieuwe partities.

Ontvangers/consumentenclients

Event Hubs biedt directe ontvangers en een eenvoudige consumentenbibliotheek met de naam Event Processor.

  • Directe ontvangers : de directe ontvangers luisteren naar specifieke partities. Het runtimegedrag wordt niet beïnvloed wanneer partities worden uitgeschaald voor een Event Hub. De toepassing die gebruikmaakt van directe ontvangers moet ervoor zorgen dat de nieuwe partities worden opgehaald en de ontvangers dienovereenkomstig worden toegewezen.

  • Gebeurtenisprocessorhost : deze client vernieuwt niet automatisch de metagegevens van de entiteit. Het zou dus niet worden opgepikt bij toename van het aantal partities. Het opnieuw maken van een gebeurtenisprocessorexemplaar zorgt ervoor dat metagegevens van een entiteit worden opgehaald, waardoor nieuwe blobs worden gemaakt voor de zojuist toegevoegde partities. Dit heeft geen invloed op bestaande blobs. Het opnieuw opstarten van alle gebeurtenisprocessorexemplaren wordt aanbevolen om ervoor te zorgen dat alle exemplaren op de hoogte zijn van de zojuist toegevoegde partities en taakverdeling correct wordt verwerkt door consumenten.

    Als u de oude versie van .NET SDK (WindowsAzure.ServiceBus) gebruikt, verwijdert de gebeurtenisprocessorhost een bestaand controlepunt bij het opnieuw opstarten als het aantal partities in het controlepunt niet overeenkomt met het aantal partities dat is opgehaald uit de service. Dit gedrag kan van invloed zijn op uw toepassing.

    Op 30 september 2026 gaan we de Azure Service Bus SDK-bibliotheken WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus en com.microsoft.azure.servicebus buiten gebruik stellen, die niet voldoen aan de Azure SDK-richtlijnen. We beëindigen ook de ondersteuning van het SBMP-protocol, zodat u dit protocol na 30 september 2026 niet meer kunt gebruiken. Migreer naar de nieuwste Azure SDK-bibliotheken, die vóór die datum essentiële beveiligingsupdates en verbeterde mogelijkheden bieden.

    Hoewel de oudere bibliotheken nog steeds meer dan 30 september 2026 kunnen worden gebruikt, ontvangen ze geen officiële ondersteuning en updates meer van Microsoft. Zie de aankondiging van de buitengebruikstelling van de ondersteuning voor meer informatie.

Apache Kafka-clients

In deze sectie wordt beschreven hoe Apache Kafka-clients die gebruikmaken van het Kafka-eindpunt van Azure Event Hubs zich gedragen wanneer het aantal partities wordt bijgewerkt voor een Event Hub.

Kafka-clients die Event Hubs gebruiken met het Apache Kafka-protocol gedragen zich anders dan event hub-clients die gebruikmaken van het AMQP-protocol. Kafka-clients werken hun metagegevens eenmaal per metadata.max.age.ms milliseconden bij. U geeft deze waarde op in de clientconfiguraties. De librdkafka bibliotheken gebruiken ook dezelfde configuratie. Metagegevensupdates informeren de clients over servicewijzigingen, inclusief de toename van het aantal partities. Zie Apache Kafka-configuraties voor Event Hubs voor een lijst met configuraties.

Afzender-/producentclients

Producenten dicteren altijd dat het verzenden van aanvragen de partitiebestemming voor elke set geproduceerde records bevat. Alle productiepartitionering wordt dus uitgevoerd aan de clientzijde met de weergave van metagegevens van de broker. Zodra de nieuwe partities zijn toegevoegd aan de metagegevensweergave van de producent, zijn ze beschikbaar voor producentenaanvragen.

Consumenten-/ontvangerclients

Wanneer een lid van een consumentengroep een metagegevensvernieuwing uitvoert en de zojuist gemaakte partities ophaalt, start dat lid een groep opnieuw. De metagegevens van de consument worden vervolgens vernieuwd voor alle groepsleden en de nieuwe partities worden toegewezen door de toegewezen leider voor opnieuw verdelen.

Aanbevelingen

  • Als u een partitiesleutel gebruikt met uw producenttoepassingen en afhankelijk bent van sleutel-hashing om de volgorde in een partitie te garanderen, wordt het dynamisch toevoegen van partities niet aanbevolen.

    Belangrijk

    Hoewel de volgorde van de bestaande gegevens behouden blijft, wordt partitie-hashing verbroken voor berichten die zijn gehasht nadat het aantal partities is gewijzigd vanwege toevoeging van partities.

  • Het toevoegen van een partitie aan een bestaand onderwerp of Event Hub-exemplaar wordt aanbevolen in de volgende gevallen:

    • Wanneer u de standaardmethode gebruikt voor het verzenden van gebeurtenissen
    • Kafka-standaardpartitioneringsstrategieën, voorbeeld: Plak-assignorstrategie

Volgende stappen

Zie Partities voor meer informatie over partities.