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.

Dekont

Bu alıştırmaya başlamadan önce Azurite uzantısını indirdiğinizden, Azure Depolama Gezgini indirdiğinizden ve Azure İşlevleri Core Tools'u indirdiğinizden emin olun.

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'u 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 dosyasında kuyruğa bağlantı dizesi içeren bir değişkeni 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"
      "io/ioutil"
      "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.

    Dekont

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

  6. Proje kökünde çalıştırarak go build server.go 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 adlı AzureWebJobsStorage bir öğe Values 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 Görüntüle>) ve ardından Azurite: Kuyruk Hizmetini Başlat'ı seçerek Azurite uzantısını başlatın.

    Dekont

    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 ad öğelerini verin.

    Screenshot that shows the emulator in Azure Storage Explorer, with a new queue created.

    Dekont

    Kuyruğa istediğiniz adı vekleyebilirsiniz. Ancak function.json dosyanızı yapılandırmak üzeresiniz. Buradaki kuyruğun adı ne olursa olsun function.json dosyasına girilmesi gerekir.

  5. dizinin altında function.json dosyasını queueTrigger bulun. 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 local.settings.json connectiondosyasında ayarladığınız değeri gösterir.

    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'da İleti Ekle'yi seçin:

    Screenshot that shows the selection for adding a message on the queue.

  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.

    Screenshot that shows message details.

  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.