İleti çoğaltma görevleri ve uygulamaları

İleti çoğaltma ve bölgeler arası federasyon makalesinde açıklandığı gibi, ileti dizilerinin Service Bus varlık çiftleri arasında ve Service Bus ile diğer ileti kaynakları ve hedefleri arasında çoğaltıldığında genellikle Azure İşlevleri.

Azure İşlevleri, ileti çoğaltma ve federasyon görevleri de dahil olmak üzere sunucusuz uygulamaları yapılandırmak ve çalıştırmak için ölçeklenebilir ve güvenilir bir yürütme ortamıdır.

Bu genel bakışta, Azure İşlevleri'in bu tür uygulamalar için yerleşik özellikleri, dönüştürme görevleri için uyarlayıp değiştirebileceğiniz kod blokları ve Service Bus ve diğer Azure Mesajlaşma hizmetleriyle ideal bir şekilde tümleştirilecek şekilde Azure İşlevleri bir uygulamayı yapılandırma hakkında bilgi edineceksiniz. Birçok ayrıntı için bu makale Azure İşlevleri belgelerine işaret edecektir.

Çoğaltma görevi nedir?

Çoğaltma görevi bir kaynaktan olayları alır ve bir hedefe iletir. Çoğu çoğaltma görevi olayları değişmeden iletir ve kaynak ve hedef protokoller farklıysa meta veri yapıları arasında eşleme gerçekleştirir.

Çoğaltma görevleri genellikle durum bilgisi olmayan görevlerdir; başka bir deyişle, bir görevin sıralı veya paralel yürütmelerinde durum veya diğer yan etkileri paylaşmaz. Bu aynı zamanda toplu işlem ve zincirleme için de geçerlidir ve her ikisi de bir akışın mevcut durumunun üzerine uygulanabilir.

Bu, çoğaltma görevlerini genellikle durum bilgisi olan ve Azure Stream Analytics gibi analiz çerçevelerinin ve hizmetlerinin etki alanı olan toplama görevlerinden farklı hale getirir.

Azure İşlevleri'de çoğaltma uygulamaları ve görevleri

Azure İşlevleri'da, bir çoğaltma görevi yapılandırılmış bir kaynaktan giriş iletileri alan bir tetikleyici ve kaynaktan kopyalanan iletileri yapılandırılmış bir hedefe ileten bir çıkış bağlaması kullanılarak uygulanır.

Tetikleyici Çıktı
Azure Event Hubs tetikleyicisi çıkış bağlamayı Azure Event Hubs
Azure Service Bus tetikleyicisi Azure Service Bus çıkış bağlaması
Azure IoT Hub tetikleyicisi çıkış bağlamayı Azure IoT Hub
Azure Event Grid tetikleyicisi çıkış bağlamayı Azure Event Grid
Azure Kuyruk Depolama tetikleyicisi Azure Kuyruk Depolama çıkış bağlaması
Apache Kafka tetikleyicisi Apache Kafka çıkış bağlaması
RabbitMQ tetikleyicisi RabbitMQ çıkış bağlaması
Azure Notification Hubs çıkış bağlaması
Azure SignalR hizmeti çıkış bağlaması
Twilio SendGrid çıkış bağlaması

Çoğaltma görevleri, diğer Azure İşlevleri uygulamalarıyla aynı dağıtım yöntemleri aracılığıyla çoğaltma uygulamasına dağıtılır. Aynı uygulamada birden çok görev yapılandırabilirsiniz.

Azure İşlevleri Premium ile birden çok çoğaltma uygulaması, App Service Planı olarak adlandırılan aynı temel kaynak havuzunu paylaşabilir. Bu, örneğin Java ile yazılmış çoğaltma görevleriyle .NET'te yazılmış çoğaltma görevlerini kolayca birlikte kullanabileceğiniz anlamına gelir. Diğer çoğaltma görevleriniz için genellikle farklı bir dil ve çalışma zamanı tercih etseniz bile, yalnızca Java için kullanılabilen Apache Camel gibi belirli kitaplıklardan yararlanmak istiyorsanız ve belirli bir tümleştirme yolu için en iyi seçenek buysa, bu önemli olacaktır.

Kullanılabilir olduğunda, tek tek olayları veya iletileri teslim eden tetikleyiciler yerine toplu iş odaklı tetikleyicileri tercih etmelisiniz ve Azure İşlevi'nin parametre bağlama ifadelerine güvenmek yerine her zaman tam olayı veya ileti yapısını edinmeniz gerekir.

İşlevin adı, bağlanmakta olduğunuz kaynak ve hedef çiftini yansıtmalı ve uygulama yapılandırma dosyalarındaki bağlantı dizelerine veya diğer yapılandırma öğelerine bu ada sahip başvurulara ön ek eklemelisiniz.

Veri ve meta veri eşleme

Giriş tetikleyicisi ve çıkış bağlama çiftine karar verdikten sonra, tetikleyicinizin türü ve çıktı aynı olmadığı sürece farklı olay veya ileti türleri arasında bazı eşlemeler yapmanız gerekir.

Event Hubs ile Service Bus arasında iletileri kopyalayan basit çoğaltma görevleri için kendi kodunuzu yazmanız gerekmez, ancak çoğaltma örnekleriyle birlikte sağlanan bir yardımcı program kitaplığına dayanabilirsiniz.

Yeniden Deneme ilkesi

Çoğaltma işlevinin her iki tarafındaki kullanılabilirlik olayı sırasında veri kaybını önlemek için yeniden deneme ilkesini sağlam olacak şekilde yapılandırmanız gerekir. Yeniden deneme ilkesini yapılandırmak için yeniden denemeler hakkındaki Azure İşlevleri belgelerine bakın.

Örnek depodaki örnek projeler için seçilen ilke ayarları, veri kaybını önlemek için sonsuz yeniden denemelerle 5 saniye ile 15 dakika arasında yeniden deneme aralıklarıyla üstel bir geri alma stratejisi yapılandırmaktadır.

Azure İşlevleri için yeniden deneme ilkelerinin genel kullanıma açık (GA) sürümü yalnızca Event Hubs ve Zamanlayıcı tetikleyicilerini destekler. Diğer tüm tetikleyiciler için önizleme desteği kaldırıldı.

Çoğaltma uygulaması konağı ayarlama

Çoğaltma uygulaması, bir veya daha fazla çoğaltma görevi için bir yürütme konağıdır.

Bu, tüketim planında veya Azure İşlevleri Premium planında (önerilen) çalışacak şekilde yapılandırılmış bir Azure İşlevleri uygulamasıdır. Tüm çoğaltma uygulamaları sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimlik altında çalıştırılmalıdır.

Bağlı Azure Resource Manager (ARM) şablonları aşağıdakilerle bir çoğaltma uygulaması oluşturur ve yapılandırılır:

  • Çoğaltma ilerleme durumunu izlemek ve günlükler için bir Azure Depolama hesabı.
  • Sistem tarafından atanan yönetilen kimlik.
  • İzleme için Azure İzleyici ve Application Insights tümleştirmesi.

Bir Azure sanal ağına (VNet) bağlı Event Hubs'a erişmesi gereken çoğaltma uygulamalarının Azure İşlevleri Premium planını kullanması ve aynı sanal ağa eklenecek şekilde yapılandırılması gerekir. Bu da kullanılabilir seçeneklerden biridir.

Dağıtma Görselleştirme
Azure İşlevleri Tüketim Planı Azure'a dağıtma Görselleştirme
premium planı Azure İşlevleri Azure'a dağıtma Görselleştirme
VNet ile Premium Planı Azure İşlevleri Azure'a dağıtma Görselleştirme

Örnekler

Örnek deposu, Event Hubs ve/veya Service Bus varlıkları arasında olayları kopyalayan çoğaltma görevlerine birkaç örnek içerir.

Olay hub'ları arasında olay verilerini kopyalamak için Event Hubs çıkış bağlaması içeren bir Event Hubs Tetikleyicisi kullanırsınız:

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

Service Bus varlıkları arasında iletileri kopyalamak için Service Bus tetikleyicisini ve çıkış bağlamasını kullanırsınız:

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

Yardımcı yöntemler Event Hubs ile Service Bus arasında çoğaltmayı kolaylaştırabilir:

Kaynak Hedef Girdi Noktası
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

İzleme

Çoğaltma uygulamanızı nasıl izleyebileceğinizi öğrenmek için lütfen Azure İşlevleri belgelerinin izleme bölümüne bakın.

Çoğaltma görevlerini izlemek için özellikle kullanışlı bir görsel araç, yakalanan izleme bilgilerinden otomatik olarak oluşturulan ve çoğaltma görev kaynağı ile hedef aktarımlarının güvenilirliğini ve performansını keşfetmeye olanak tanıyan Application Insights Uygulama Haritası'dır.

Anında tanılama içgörüleri için günlük ayrıntılarının düşük gecikmeli görselleştirmesini sağlayan Canlı Ölçümler portalı aracıyla çalışabilirsiniz.

Sonraki adımlar