Delen via


Berichtreplicatietaken en -toepassingen

Zoals uitgelegd in het artikel berichtreplicatie en federatie tussen regio's, is replicatie van berichtenreeksen tussen paren van Service Bus-entiteiten en tussen Service Bus en andere berichtbronnen en doelen over het algemeen afhankelijk van Azure Functions.

Azure Functions is een schaalbare en betrouwbare uitvoeringsomgeving voor het configureren en uitvoeren van serverloze toepassingen, waaronder berichtreplicatie en federatietaken.

In dit overzicht krijgt u informatie over de ingebouwde mogelijkheden van Azure Functions voor dergelijke toepassingen, over codeblokken die u kunt aanpassen en wijzigen voor transformatietaken en over het configureren van een Azure Functions-toepassing, zodat deze het beste kan worden geïntegreerd met Service Bus en andere Azure Messaging-services. Voor veel informatie verwijst dit artikel naar de Azure Functions documentatie.

Wat is een replicatietaak?

Een replicatietaak ontvangt gebeurtenissen van een bron en stuurt deze door naar een doel. De meeste replicatietaken sturen gebeurtenissen ongewijzigd door en voeren maximaal toewijzingen uit tussen metagegevensstructuren als de bron- en doelprotocollen verschillen.

Replicatietaken zijn over het algemeen staatloos, wat betekent dat ze geen status of andere neveneffecten delen voor opeenvolgende of parallelle uitvoeringen van een taak. Dat geldt ook voor batchverwerking en ketenverwerking, die beide kunnen worden geïmplementeerd boven op de bestaande status van een stroom.

Hierdoor verschillen replicatietaken van aggregatietaken, die over het algemeen stateful zijn en het domein zijn van analyseframeworks en -services zoals Azure Stream Analytics.

Replicatietoepassingen en -taken in Azure Functions

In Azure Functions wordt een replicatietaak geïmplementeerd met behulp van een trigger die invoerberichten verkrijgt van een geconfigureerde bron en een uitvoerbinding waarmee berichten die zijn gekopieerd van de bron naar een geconfigureerd doel worden doorgestuurd.

Trigger Uitvoer
Azure Event Hubs trigger uitvoerbinding Azure Event Hubs
Azure Service Bus-trigger uitvoerbinding Azure Service Bus
Azure IoT Hub-trigger uitvoerbinding Azure IoT Hub
Azure Event Grid trigger uitvoerbinding Azure Event Grid
Azure Queue Storage-trigger Azure Queue Storage-uitvoerbinding
Apache Kafka-trigger Apache Kafka-uitvoerbinding
RabbitMQ trigger RabbitMQ-uitvoerbinding
Azure Notification Hubs-uitvoerbinding
Azure SignalR-serviceuitvoerbinding
Twilio SendGrid-uitvoerbinding

Replicatietaken worden geïmplementeerd in de replicatietoepassing via dezelfde implementatiemethoden als elke andere Azure Functions toepassing. U kunt meerdere taken configureren in dezelfde toepassing.

Met Azure Functions Premium kunnen meerdere replicatietoepassingen dezelfde onderliggende resourcegroep delen, een App Service-plan genoemd. Dit betekent dat u eenvoudig replicatietaken die in .NET zijn geschreven, kunt samenvoegen met replicatietaken die bijvoorbeeld in Java zijn geschreven. Dat is van belang als u wilt profiteren van specifieke bibliotheken zoals Apache Camel die alleen beschikbaar zijn voor Java en of deze de beste optie zijn voor een bepaald integratiepad, ook al geeft u meestal de voorkeur aan een andere taal en runtime voor uw andere replicatietaken.

Indien beschikbaar, moet u de voorkeur geven aan de batchgeoriënteerde triggers boven triggers die afzonderlijke gebeurtenissen of berichten leveren. U moet altijd de volledige gebeurtenis- of berichtstructuur verkrijgen in plaats van te vertrouwen op de parameterbindingsexpressies van Azure Function.

De naam van de functie moet overeenkomen met het bron- en doelpaar waarmee u verbinding maakt, en u moet verwijzingen naar verbindingsreeksen of andere configuratie-elementen in de toepassingsconfiguratiebestanden met die naam voorvoegsel geven.

Toewijzing van gegevens en metagegevens

Zodra u een paar invoertriggers en uitvoerbindingen hebt gekozen, moet u enkele toewijzingen uitvoeren tussen de verschillende gebeurtenis- of berichttypen, tenzij het type van de trigger en de uitvoer hetzelfde zijn.

Voor eenvoudige replicatietaken die berichten kopiëren tussen Event Hubs en Service Bus, hoeft u niet uw eigen code te schrijven, maar kunt u gebruikmaken van een hulpprogrammabibliotheek die bij de replicatievoorbeelden wordt geleverd.

Beleid voor opnieuw proberen

Als u gegevensverlies wilt voorkomen tijdens beschikbaarheidsevenementen aan weerszijden van een replicatiefunctie, moet u het beleid voor opnieuw proberen zo configureren dat het robuust is. Raadpleeg de Azure Functions documentatie over nieuwe pogingen om het beleid voor opnieuw proberen te configureren.

De beleidsinstellingen die zijn gekozen voor de voorbeeldprojecten in de voorbeeldopslagplaats configureren een exponentieel uitstelstrategie met intervallen van 5 seconden tot 15 minuten met oneindige nieuwe pogingen om gegevensverlies te voorkomen.

De algemeen beschikbare versie van beleid voor opnieuw proberen voor Azure Functions ondersteunt alleen Event Hubs en Timer-triggers. De preview-ondersteuning voor alle andere triggers is verwijderd.

Een replicatietoepassingshost instellen

Een replicatietoepassing is een uitvoeringshost voor een of meer replicatietaken.

Het is een Azure Functions-toepassing die is geconfigureerd om te worden uitgevoerd in het verbruiksabonnement of (aanbevolen) op een Azure Functions Premium-abonnement. Alle replicatietoepassingen moeten worden uitgevoerd onder een door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteit.

Met de gekoppelde ARM-sjablonen (Azure Resource Manager) wordt een replicatietoepassing gemaakt en geconfigureerd met:

  • Een Azure Storage-account voor het bijhouden van de replicatievoortgang en voor logboeken.
  • Een door het systeem toegewezen beheerde identiteit.
  • Integratie van Azure Monitor en Application Insights voor bewaking.

Replicatietoepassingen die toegang moeten hebben tot Event Hubs die zijn gebonden aan een virtueel Azure-netwerk (VNet), moeten het Azure Functions Premium-abonnement gebruiken en worden geconfigureerd om te worden gekoppeld aan hetzelfde VNet, wat ook een van de beschikbare opties is.

Implementeren Visualiseren
Azure Functions-verbruiksabonnement Implementeren in Azure Visualiseren
Azure Functions Premium-abonnement Implementeren in Azure Visualiseren
Azure Functions Premium-abonnement met VNet Implementeren in Azure Visualiseren

Voorbeelden

De opslagplaats met voorbeelden bevat verschillende voorbeelden van replicatietaken die gebeurtenissen kopiëren tussen Event Hubs en/of tussen Service Bus-entiteiten.

Voor het kopiëren van gebeurtenisgegevens tussen Event Hubs gebruikt u een Event Hubs-trigger met een Event Hubs-uitvoerbinding:

[FunctionName("telemetry")]
[ExponentialBackoffRetry(-1, "00:00:05", "00:05:00")]
public static Task Telemetry(
    [EventHubTrigger("telemetry", ConsumerGroup = "$USER_FUNCTIONS_APP_NAME.telemetry", Connection = "telemetry-source-connection")] EventData[] input,
    [EventHub("telemetry-copy", Connection = "telemetry-target-connection")] EventHubClient outputClient,
    ILogger log)
{
    return EventHubReplicationTasks.ForwardToEventHub(input, outputClient, log);
}

Voor het kopiëren van berichten tussen Service Bus-entiteiten gebruikt u de Service Bus-trigger en uitvoerbinding:

[FunctionName("jobs-transfer")]
[ExponentialBackoffRetry(-1, "00:00:05", "00:05:00")]
public static Task JobsTransfer(
    [ServiceBusTrigger("jobs-transfer", Connection = "jobs-transfer-source-connection")] Message[] input,
    [ServiceBus("jobs", Connection = "jobs-target-connection")] IAsyncCollector<Message> output,
    ILogger log)
{
    return ServiceBusReplicationTasks.ForwardToServiceBus(input, output, log);
}

Met de helpermethoden kunt u eenvoudig repliceren tussen Event Hubs en Service Bus:

Bron Doel Toegangspunt
Event Hubs Event Hubs Azure.Messaging.Replication.EventHubReplicationTasks.ForwardToEventHub
Event Hubs Service Bus Azure.Messaging.Replication.EventHubReplicationTasks.ForwardToServiceBus
Service Bus Event Hubs Azure.Messaging.Replication.ServiceBusReplicationTasks.ForwardToEventHub
Service Bus Service Bus Azure.Messaging.Replication.ServiceBusReplicationTasks.ForwardToServiceBus

Bewaking

Raadpleeg de sectie bewaking van de Azure Functions documentatie voor meer informatie over het bewaken van uw replicatie-app.

Een bijzonder handig visueel hulpprogramma voor het bewaken van replicatietaken is het Application Insights-toepassingsoverzicht, dat automatisch wordt gegenereerd op basis van de vastgelegde bewakingsinformatie en waarmee de betrouwbaarheid en prestaties van de bron- en doeloverdrachten van de replicatietaak kunnen worden verkend.

Voor onmiddellijke diagnostische inzichten kunt u werken met het portalhulpprogramma Live Metrics , dat een visualisatie met een lage latentie van logboekdetails biedt.

Volgende stappen