Azure Http Triggers Function ile Redis Cache’in Güncellenmesi

Selamlar,

Bu makalede, Azure Function bir url’in tetiklenmesi ile hali hazırda kullanılan Redis Cache üzerindeki bir data, güncellenecektir. Azure üzerinde Redis Cache makalesine buradan erişebilirsiniz. Örneğin bu iş için, Localde yapılacak bir windows servisin oluşturulması, Continuous Integration, güvenlik ve sertifika gibi, daha birçok maliyetleri beraberinde getirecektir. Azure Http Trigger function ile bu iş, tamamen cloud’a yıkılmış ve biz developerların üzerinden büyük bir yük kaldırılmıştır :) Bu makalede :

  • Visual Studio 2017 15.9.6’ı
  • Azure Http Function
  • Service Stack Redis kullanılacaktır.

New Project / Cloud / Azure Functions seçilerek, yeni bir proje aşağıdaki gibi oluşturulur:

Açılan menüden, Azure Functions templatelerinden Http trigger aşağıdaki gibi seçilir: Yani kısacası, bir url’e “Get” ya da “Post” işlemi yapıldığı zaman, yazılan bu function tetiklenecektir. Uzun lafın kısası “Microserviceslerin Serverless” halidir.

ServiceStack Redis kütüphanesi aşağıdaki komut ile indirilir: Amaç, hali hazırda çalışan Redis Cache’e erişim ve ilgili key’e ait haberin güncellenmesidir.

local.settings.json: Redis sunucuya bağlanmak için gerekli tüm config ayarlar, bu dosya üzerinde tutulmaktadır.

NewsModel: Redis üzerinde güncellenecek haber model, aşağıdaki gibidir.

Function1.cs: Url çağrıldığı zaman tetiklenecek bu function’ı, gelin adım adım inceleyelim:

1-) “public static async Task<HttpResponseMessage> Run(HttpRequestMessage req,[HttpTrigger(AuthorizationLevel.Function, “get”, “post”, Route = null)] NewsModel news, TraceWriter log)”:

    • “HttpRequestMessage req” : Url’e gelen RequestMessage’ın, “CreateResponse()” methodu kullanılarak işlem sonucu ekrana yazdırılmıştır.
    • “[HttpTrigger(AuthorizationLevel.Function, “get”, “post”, Route = null)] NewsModel news” : Url’den parametre olarak “NewsModel” alınmıştır. Böylece gelen Haber’in IDsine göre eskisi bulunup, yenisi ile değiştirilebilecektir :)

2-) RedisEndpoint conf ile ServiceStack kütüphanesinin, Azure üzerinde çalışan Redis’e erişimi için gerekli olan config dosyalar “local.settings.json” üzerinden okunarak oluşturulur.

3-) “string title = news.title;” : Bu örnekte, haberin sedece başlığı  değiştirilecektir. Bu nedenle gelen haber içinden sadece title alınmıştır.

  • “IRedisClient client = new RedisClient(conf)”: Azure üzerindeki redis’e bağlanılmıştır.
  • “var data = client.Get<NewsModel>($”flag{news.Id}”);” : Başlığı değiştirilecek haber Id’sinden getirilmiştir.
  • “data.title = news.title;” : Başlık bilgisi, yeni gönderilen haber’deki başlık bilgisi ile değiştirilmiştir.
  • “client.Set<NewsModel>($”flag{news.Id}”, data);” Güncellenen haber, redis’e kaydedilir.

Function1.cs:

Url Get: Örnek amaçlı tetiklenecek Url.

Yazılan bu function’ın Azure’a nasıl publish edildiğini, bu makaleden öğrenebilirsiniz.

Geldik bir makalenin daha sonuna. Bu makalede Windows Service ya da Queue (RabbitMq,Kafka gibi) ve Microservicesler ile yapılabilecek bir işi, Azure Html Trigger Functions ile suya sabuna dokunmadan hallettik :)

Yeni bir makalede görüşmek üzere hepinize hoşçakalın.

Source : https://docs.microsoft.com/tr-tr/azure/azure-functions/functions-bindings-http-webhook

Herkes Görsün:

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.