Alıştırma - Kuyruk iletisini işleme

Tamamlandı

Bu alıştırmada, uygulamanızı ileti kuyruğundaki bir iletide tetiklenebilen bir yol ile genişleteceksiniz.

Uygulamayı iskeleye ekle

Bu alıştırma için yeni bir Azure İşlevleri uygulamasıyla başlayacağız. Yeni bir dizin oluşturun ve kendinizi dizinine yerleştirin.

  1. Komut Paleti Görüntüle'yi> seçin.

  2. Azure İşlevleri: Yeni Proje Oluştur seçin.

  3. Genellikle geçerli klasörünüz olan bir klasör seçin.

  4. Dil seçin bölümünde Özel İşleyici'yi seçin.

  5. İlk işleviniz için şablon seçin bölümünde HttpTrigger'ı seçin.

  6. Uygulamaya queueTrigger gibi bir ad verin.

  7. Anonim yetkilendirme düzeyini seçin. İsterseniz bunu daha sonra değiştirebilirsiniz.

  8. Kökte server.go adlı bir dosya oluşturun. Projenizde artık aşağıdaki dosyalar olmalıdır:

    queueTrigger/
      function.json
    .funcignore
    .gitignore
    host.json
    local.settings.json
    proxies.json
    server.go 
    
  9. Dizinindeki function.json dosyasına queueTrigger gidin. öğesindeki ilk bağlama girdisini type bulun:

    {
       "authLevel": "anonymous",
       "type": "httpTrigger",
       "direction": "in",
       "name": "req",
       "methods": [
         "get",
         "post"
       ]
     }
    

    Bu bağlama girdisini şu yapılandırmayla değiştirin:

    {
       "name": "queueItem",
       "type": "queueTrigger",
       "direction": "in",
       "queueName" : "items",
       "connection": "AzureWebJobsStorage"
    }
    

    Bu adımda özelliğini ayarlarsınız name . Daha sonra kodda buna başvuracaksınız. Ayrıca tetikleyici türünü queueTriggerolarak değiştirerek kuyruk iletilerini dinlemeyi mümkün hale getirebilirsiniz.

    queueName Değer belirli bir kuyruğu gösterir. Öykünücüyü daha sonra çalıştırdığınızda, böyle bir ada sahip bir kuyruk oluşturacaksınız.

    Son olarak, local.settings.json'da kuyruğa bağlantı dizesi içerecek bir değişkene işaret ettiniz.

Uygulamayı oluşturma

Bu noktada bir uygulama iskeleti elde etmiş olacaksınız. Artık gelen kuyruk iletilerini işleyebilen kod eklemeye hazırsınız.

  1. server.go dosyasını açın ve aşağıdaki kodu ekleyin:

    package main
    
    import (
      "encoding/json"
      "fmt"
      "log"
      "net/http"
      "os"
    )
    
    func queueHandler(w http.ResponseWriter, r *http.Request) {
    }
    
    func main() {
      customHandlerPort, exists := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT")
      if !exists {
        customHandlerPort = "8080"
      }
      mux := http.NewServeMux()
      mux.HandleFunc("/queueTrigger", queueHandler)
      fmt.Println("Go server Listening on: ", customHandlerPort)
      log.Fatal(http.ListenAndServe(":"+customHandlerPort, mux))
    }
    

    Artık konumunda ayarlanmış bir yolunuz /queueTriggervar.

  2. İçeri aktarma bölümünü bulun ve altına aşağıdaki yapıları ekleyin:

    type InvokeRequest struct {
      Data     map[string]json.RawMessage
      Metadata map[string]interface{}
    }
    
  3. queueHandler() yöntemini bulun ve aşağıdaki şekilde güncelleştirin:

    func queueHandler(w http.ResponseWriter, r *http.Request) {
      var invokeRequest InvokeRequest
    
      d := json.NewDecoder(r.Body)
      d.Decode(&invokeRequest)
    
      var parsedMessage string
      json.Unmarshal(invokeRequest.Data["queueItem"], &parsedMessage)
    }
    

    Kod ilk olarak gelen yanıt akışından gövdeyi okur ve kodunu çözer:

    var invokeRequest InvokeRequest
    
    d := json.NewDecoder(r.Body)
    d.Decode(&invokeRequest)
    

    Ardından iletinin kendisi çağrısıyla Unmarshal()çıkarılır:

    var parsedMessage string
    json.Unmarshal(invokeRequest.Data["queueItem"], &parsedMessage)
    

    Artık iletiyi edindiğinize göre, bunu yazdıralım.

  4. Şu kodu ekleyin:

    fmt.Println(parsedMessage) // your message
    

    Kodunuzun tamamı artık yazılmıştır, ancak test edebilmeniz için projenizi yapılandırmanız gerekir.

  5. host.json dosyasında öğesini bulun defaultExecutablePath ve değerini verin./server.

    Not

    Windows için değerini .\\server.exekullanırsınız.

  6. Proje kökünde dosyasını oluşturun:

    go build server.go
    

Ortamı yapılandırma

Sonraki adım ortamınızı yapılandırmaktır. Yerel olarak geliştirme yaptığınız için, öykünmüş bir ileti kuyruğuyla konuşabilmek için bunu ayarlamanız gerekir.

  1. local.settings.json dosyasında, adı Values olan bir öğe bulun (veya eksikse ekleyin). değerini UseDevelopmentStorage=trueverin. JSON girdiniz şu şekilde görünmelidir:

    "AzureWebJobsStorage" : "UseDevelopmentStorage=true"
    
  2. Komut paletini açarak (Komut Paletini>) ve ardından Azurite: Kuyruk Hizmetini Başlat'ı seçerek Azurite uzantısını başlatın.

    Not

    Bu adım projenizde bazı yerel dosyalar oluşturur.

  3. Azure Depolama Gezgini'i açın. Sol tarafta öykünücünün içeriği görünür.

  4. Kuyruklar düğümüne sağ tıklayın ve yeni bir kuyruk oluşturma seçeneğini belirleyin. Ona items adını verin.

    Azure Depolama Gezgini'ndeki öykünücüyü ve yeni oluşturulmuş bir kuyruğu gösteren ekran görüntüsü.

    Not

    Kuyruğa istediğiniz adı vekleyebilirsiniz. Ancak ,function.json dosyanızı yapılandırmak üzeresiniz. Kuyruğun adı ne olursa olsun, buradaki ad function.json'e eklenmelidir.

  5. dizinin altındaki function.jsonqueueTrigger. Dizinin aşağıdaki girdiye sahip olduğundan bindings emin olun:

    {
       "name": "queueItem",
       "type": "queueTrigger",
       "direction": "in",
       "queueName" : "items",
       "connection": "AzureWebJobsStorage"
     }
    

    özelliği, queueName Azure Depolama Gezgini'de oluşturduğunuz kuyrukla aynı ada sahiptir. özelliği, connection local.settings.json'de ayarladığınız değere işaret eder.

    name özelliği değerine queueItemsahiptir. Go kodunuz kuyruk iletisini ayrıştırmak için bu değeri kullanır.

Uygulamayı çalıştırma

Bu noktada her şey ayarlanır. Tek yapmanız gereken uygulamayı çalıştırmak, Azure Depolama Gezgini başlatmak ve bir kuyruk iletisi oluşturmaktır. Kodunuz bu iletiyi kullanabilmelidir.

  1. Terminalden komutunu proje kökünde çalıştırın func start :

    func start
    
  2. Visual Studio Code'da komut paletini açın ve Azurite: Kuyruk Hizmetini Başlat'ı çalıştırın.

  3. Henüz başlatılmadıysa Azure Depolama Gezgini başlatın.

  4. Azure Depolama Gezgini'nde İleti Ekle'yi seçin:

    Kuyruğa ileti ekleme seçimini gösteren ekran görüntüsü.

  5. Görüntülenen iletişim kutusuna ileti girin ve Tamam'ı seçin. Artık oluşturduğunuz iletinin ayrıntılarını görürsünüz.

    İleti ayrıntılarını gösteren ekran görüntüsü.

  6. Visual Studio Code'da işlevinizin artık çalışıyor olması gerekir. Terminalde, son satır olarak yazdırılan iletiyi görmeniz gerekir.

    İşleviniz kuyruk iletisini kullanabildi ve içeriğini yazdı.

Tebrikler! Go'da bir kuyruk iletisinde tetikleyebilen bir Azure işlevi oluşturacaksınız. Ayrıca bu iletiyi ayrıştırmışsınız.

Gelen bir iletiyle ne yaptığınız size bağlı. Örneğin, bir veritabanında depolayabilir veya bir web isteğinde yük olarak gönderebilirsiniz.