Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, düzenleme yaşam döngüsü olaylarını (oluşturulan, tamamlanan ve başarısız gibi) özel bir Azure Event Grid konusuna yayımlamak için Dayanıklı İşlevler nasıl ayarlanacağı gösterilmektedir.
Bu özelliğin yararlı olduğu bazı senaryolar aşağıdadır:
Mavi/yeşil dağıtımlar gibi DevOps senaryoları: Yan yana dağıtım stratejisini uygulamadan önce herhangi bir görevlerin çalışıp çalışmadığını bilmek isteyebilirsiniz.
Gelişmiş izleme ve tanılama desteği: düzenleme durumu bilgilerini Azure SQL Veritabanı veya Azure Cosmos DB gibi sorgular için iyileştirilmiş bir dış depoda izleyebilirsiniz.
Uzun süre çalışan arka plan etkinliği: Uzun süre çalışan bir arka plan etkinliği için Dayanıklı İşlevler kullanıyorsanız, bu özellik geçerli durumu bilmenize yardımcı olur.
Önkoşullar
- Dayanıklı İşlevler projenize Microsoft.Azure.WebJobs.Extensions.DurableTask yükleyin.
- Azurite depolama öykünücüsü yükleyin veya mevcut bir Azure Depolama hesabını kullanın.
- Azure CLI'yi yükleme veya Azure Cloud Shell kullanma
Özel Event Grid konusu oluşturma
Dayanıklı İşlevler'dan olay göndermek için bir Event Grid konusu oluşturun. Aşağıdaki yönergelerde, Azure CLI kullanarak konu oluşturma adımları gösterilmektedir. Konuyu PowerShell'i veya Azure portalını kullanarak da oluşturabilirsiniz.
Kaynak grubu oluşturma
az group create
komutuyla bir kaynak grubu oluşturun. Azure Event Grid şu anda tüm bölgeleri desteklemez. Hangi bölgelerin desteklendiği hakkında bilgi için bkz. Azure Event Grid'e genel bakış.
az group create --name eventResourceGroup --location westus2
Özel konu oluşturma
Event Grid konusu, olayınızı gönderdiğiniz kullanıcı tanımlı bir uç nokta sağlar. <topic_name>
değerini konunuz için benzersiz bir adla değiştirin. Konu adı bir DNS girdisi haline geldiğinden benzersiz olmalıdır.
az eventgrid topic create --name <topic_name> -l westus2 -g eventResourceGroup
Uç noktayı ve anahtarı alma
Konunun uç noktasını alın. değerini seçtiğiniz adla değiştirin <topic_name>
.
az eventgrid topic show --name <topic_name> -g eventResourceGroup --query "endpoint" --output tsv
Konu anahtarını alın. değerini seçtiğiniz adla değiştirin <topic_name>
.
az eventgrid topic key list --name <topic_name> -g eventResourceGroup --query "key1" --output tsv
Artık konuya olay gönderebilirsiniz.
Event Grid yayımlamayı yapılandırma
Dayanıklı İşlevler projenizde dosyayı bulunhost.json
.
Dayanıklı İşlevler 1.x
Bir durableTask
özelliğe ve eventGridKeySettingName
ekleyineventGridTopicEndpoint
.
{
"durableTask": {
"eventGridTopicEndpoint": "https://<topic_name>.westus2-1.eventgrid.azure.net/api/events",
"eventGridKeySettingName": "EventGridKey"
}
}
Dayanıklı İşlevler 2.x
Dosyanın özelliğine durableTask
bir notifications
bölüm ekleyin ve öğesini seçtiğiniz adla değiştirin<topic_name>
. durableTask
veya extensions
özellikleri yoksa, bunları şu örnek gibi oluşturun:
{
"version": "2.0",
"extensions": {
"durableTask": {
"notifications": {
"eventGrid": {
"topicEndpoint": "https://<topic_name>.westus2-1.eventgrid.azure.net/api/events",
"keySettingName": "EventGridKey"
}
}
}
}
}
Olası Azure Event Grid yapılandırma özellikleri host.json belgelerinde bulunabilir. Dosyayı yapılandırdıktan host.json
sonra işlev uygulamanız yaşam döngüsü olaylarını Event Grid konusuna gönderir. Bu eylem, işlev uygulamanızı hem yerel olarak hem de Azure'da çalıştırdığınızda başlar.
İşlev Uygulaması ve local.settings.json
içindeki konu anahtarı için uygulama ayarını ayarlayın. Aşağıdaki JSON, Azure Depolama öykünücüsü local.settings.json
kullanılarak yerel hata ayıklamaya yönelik bir örnektir. değerini konu anahtarıyla değiştirin <topic_key>
.
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"EventGridKey": "<topic_key>"
}
}
Gerçek bir Azure Depolama hesabı yerine Depolama Öykünücüsü kullanıyorsanız çalıştığından emin olun. Yürütmeden önce mevcut depolama verilerini temizlemek iyi bir fikirdir.
Gerçek bir Azure Depolama hesabı kullanıyorsanız değerini bağlantı dizesi ile değiştirin UseDevelopmentStorage=true
local.settings.json
.
Olayları dinleyen işlevler oluşturma
Azure portalını kullanarak, Dayanıklı İşlevler uygulamanız tarafından yayımlanan olayları dinlemek için başka bir işlev uygulaması oluşturun. Event Grid konusuyla aynı bölgede bulmak en iyisidir.
Event Grid tetikleyici işlevi oluşturma
İşlev uygulamanızda İşlevler'i ve ardından + Ekle'yi seçin
Event Grid'i arayın ve Azure Event Grid tetikleyici şablonunu seçin.
Yeni tetikleyiciyi adlandırın ve İşlev Oluştur'u seçin.
Aşağıdaki koda sahip bir işlev oluşturulur:
#r "Newtonsoft.Json" using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Microsoft.Extensions.Logging; public static void Run(JObject eventGridEvent, ILogger log) { log.LogInformation(eventGridEvent.ToString(Formatting.Indented)); }
Event Grid aboneliği ekleme
Artık oluşturduğunuz Event Grid konusu için bir Event Grid aboneliği ekleyebilirsiniz. Daha fazla bilgi için bkz . Azure Event Grid'deki kavramlar.
Yeni işlevinizde Tümleştirme'yi ve ardından Event Grid Tetikleyicisi (eventGridEvent) öğesini seçin.
Event Grid Açıklaması Oluştur'u seçin.
Olay aboneliğinizi adlandırın ve Event Grid Konuları konu türünü seçin.
Aboneliği seçin. Ardından Event Grid konusu için oluşturduğunuz kaynak grubunu ve kaynağı seçin.
Oluştur'u belirleyin.
Artık yaşam döngüsü olaylarını almaya hazırsınız.
Olayları göndermek için Dayanıklı İşlevler uygulamasını çalıştırın
Daha önce yapılandırdığınız Dayanıklı İşlevler projesinde yerel makinenizde hata ayıklamayı başlatın ve bir düzenleme başlatın. Uygulama Dayanıklı İşlevler yaşam döngüsü olaylarını Event Grid'de yayımlar. Event Grid'in oluşturduğunuz dinleyici işlevini Azure portalında günlüklerini denetleyerek tetiklediğini doğrulayın.
2019-04-20T09:28:21.041 [Info] Function started (Id=3301c3ef-625f-40ce-ad4c-9ba2916b162d)
2019-04-20T09:28:21.104 [Info] {
"id": "054fe385-c017-4ce3-b38a-052ac970c39d",
"subject": "durable/orchestrator/Running",
"data": {
"hubName": "DurableFunctionsHub",
"functionName": "Sample",
"instanceId": "055d045b1c8a415b94f7671d8df693a6",
"reason": "",
"runtimeStatus": "Running"
},
"eventType": "orchestratorEvent",
"eventTime": "2019-04-20T09:28:19.6492068Z",
"dataVersion": "1.0",
"metadataVersion": "1",
"topic": "/subscriptions/<your_subscription_id>/resourceGroups/eventResourceGroup/providers/Microsoft.EventGrid/topics/durableTopic"
}
2019-04-20T09:28:21.104 [Info] Function completed (Success, Id=3301c3ef-625f-40ce-ad4c-9ba2916b162d, Duration=65ms)
2019-04-20T09:28:37.098 [Info] Function started (Id=36fadea5-198b-4345-bb8e-2837febb89a2)
2019-04-20T09:28:37.098 [Info] {
"id": "8cf17246-fa9c-4dad-b32a-5a868104f17b",
"subject": "durable/orchestrator/Completed",
"data": {
"hubName": "DurableFunctionsHub",
"functionName": "Sample",
"instanceId": "055d045b1c8a415b94f7671d8df693a6",
"reason": "",
"runtimeStatus": "Completed"
},
"eventType": "orchestratorEvent",
"eventTime": "2019-04-20T09:28:36.5061317Z",
"dataVersion": "1.0",
"metadataVersion": "1",
"topic": "/subscriptions/<your_subscription_id>/resourceGroups/eventResourceGroup/providers/Microsoft.EventGrid/topics/durableTopic"
}
2019-04-20T09:28:37.098 [Info] Function completed (Success, Id=36fadea5-198b-4345-bb8e-2837febb89a2, Duration=0ms)
Olay Şeması
Aşağıdaki listede yaşam döngüsü olayları şeması açıklanmaktadır:
id
: Event Grid olayının benzersiz tanımlayıcısı.subject
: Olay konusunun yolu.durable/orchestrator/{orchestrationRuntimeStatus}
.{orchestrationRuntimeStatus}
, ,Completed
Failed
veTerminated
olacaktırRunning
.data
: belirli parametreleri Dayanıklı İşlevler.hubName
: TaskHub adı.functionName
: Orchestrator işlev adı.instanceId
: Dayanıklı İşlevler instanceId.reason
: İzleme olayıyla ilişkili ek veriler. Daha fazla bilgi için bkz. Dayanıklı İşlevler Tanılama (Azure İşlevleri)runtimeStatus
: Orchestration Çalışma Zamanı Durumu. Çalışıyor, Tamamlandı, Başarısız, İptal Edildi.
eventType
: "orchestratorEvent"eventTime
: Olay saati (UTC).dataVersion
: Yaşam döngüsü olay şemasının sürümü.metadataVersion
: Meta verilerin sürümü.topic
: Event Grid konu kaynağı.
Yerel olarak test etme
Yerel olarak test etmek için görüntüleyici web uygulamasıyla yerel test okuyun.