Latihan - Menangani pesan antrean

Selesai

Dalam latihan ini, Anda akan memperluas aplikasi Anda dengan rute yang dapat memicu pesan dalam antrean pesan.

Catatan

Sebelum memulai latihan ini, pastikan Anda telah mengunduh ekstensi Azurite, mengunduh Azure Storage Explorer, dan mengunduh Azure Functions Core Tools.

Menguraikan aplikasi

Untuk latihan ini, kita akan mulai pada aplikasi Azure Functions baru. Buat direktori baru dan tempatkan diri Anda di dalamnya.

  1. Pilih Lihat>Pallet Perintah.

  2. Pilih Azure Functions: Buat Project Baru.

  3. Pilih folder, biasanya folder Anda saat ini.

  4. Di Pilih bahasa, pilih Handler Kustom.

  5. Di Pilih templat untuk fungsi pertama Anda, pilih HttpTrigger.

  6. Beri nama aplikasi, seperti queueTrigger.

  7. Pilih tingkat otorisasi anonim. Anda bisa mengubah nama nanti jika mau.

  8. Pada akar, buat file bernama server.go. Proyek Anda sekarang memiliki file berikut:

    queueTrigger/
      function.json
    .funcignore
    .gitignore
    host.json
    local.settings.json
    proxies.json
    server.go 
    
  9. Buka file function.json di queueTrigger direktori. Temukan entri pengikatan pertama dalam elemen type:

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

    Ubah entri pengikatan tersebut ke konfigurasi ini:

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

    Dalam langkah ini, Anda mengatur properti name. Anda akan merujuknya nanti dalam kode. Anda juga mengubah jenis pemicu menjadi queueTrigger, yang memungkinkan untuk mendengarkan pesan antrean.

    Nilai queueName menunjukkan antrean tertentu. Saat menjalankan emulator nanti, Anda akan membuat antrean dengan nama seperti itu.

    Terakhir, Anda menunjukkan variabel di local.settings.json yang akan berisi string koneksi ke antrean.

Membuat aplikasi

Pada titik ini, Anda memiliki kerangka aplikasi. Anda sekarang siap untuk menambahkan kode yang dapat menangani pesan antrean masuk.

  1. Buka file server.go dan tambahkan kode berikut:

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

    Anda sekarang memiliki rute yang disiapkan di /queueTrigger.

  2. Temukan bagian impor dan tambahkan struktur berikut di bawahnya:

    type InvokeRequest struct {
      Data     map[string]json.RawMessage
      Metadata map[string]interface{}
    }
    
  3. Temukan metode queueHandler() dan tambahkan perbarui dengan cara berikut:

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

    Kode pertama kali membaca isi dari aliran respons masuk dan mendekodenya:

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

    Kemudian pesan itu sendiri digali dengan panggilan ke Unmarshal():

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

    Sekarang setelah Anda memiliki pesannya, mari kita cetak.

  4. Tambahkan kode berikut:

    fmt.Println(parsedMessage) // your message
    

    Kode Anda sekarang sudah ditulis, tetapi Anda perlu mengonfigurasi proyek Anda sehingga Anda dapat mengujinya.

  5. Dalam file host.json, temukan elemen defaultExecutablePath dan berikan nilai ./server.

    Catatan

    Untuk Windows, Anda akan menggunakan nilai .\server.exe.

  6. Bangun file server.go dengan menjalankan go build di akar proyek:

    go build server.go
    

Mengonfigurasi lingkungan

Langkah selanjutnya adalah mengonfigurasi lingkungan Anda. Karena Anda mengembangkan secara lokal, Anda perlu mengaturnya sehingga Anda dapat berbicara dengan antrean pesan yang ditiru.

  1. Dalam file local.settings.json, temukan elemen di Values yang dipanggil AzureWebJobsStorage (atau tambahkan jika hilang). Berikan nilai UseDevelopmentStorage=true. Entri JSON Anda akan terlihat seperti ini:

    "AzureWebJobsStorage" : "UseDevelopmentStorage=true"
    
  2. Mulai ekstensi Azurite dengan membuka palet perintah (Lihat>Palet Perintah) lalu pilih Azurite: Mulai Layanan Antrean.

    Catatan

    Langkah ini akan membuat beberapa file lokal di proyek Anda.

  3. Buka Azure Storage Explorer. Di sisi kiri terlihat konten emulator.

  4. Klik kanan simpul Antrean dan pilih opsi untuk membuat antrean baru. Beri nama item.

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

    Catatan

    Anda dapat memberi nama antrean tersebut apa saja yang Anda inginkan. Namun, Anda sedang akan mengonfigurasi file function.json Anda. Apa pun nama antrean Anda, perlu dimasukkan ke function.json.

  5. Temukan function.json di bawah direktori queueTrigger. Pastikan bahwa array bindings memiliki entri berikut:

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

    Properti queueName memiliki nama yang sama dengan antrean yang Anda buat di Azure Storage Explorer. Properti connection menunjuk ke nilai yang Anda siapkan di local.settings.json.

    Properti name memiliki nilai queueItem. Kode Go Anda menggunakan nilai ini untuk mengurai pesan antrean.

Menjalankan aplikasi

Pada titik ini, semuanya sudah diatur. Yang perlu Anda lakukan adalah menjalankan aplikasi, memulai Azure Storage Explorer, dan membuat pesan antrean. Kode Anda akan dapat menggunakan pesan tersebut.

  1. Dari terminal, jalankan perintah func start di akar proyek:

    func start
    
  2. Di Visual Studio Code, buka palet perintah dan jalankan Azurite: Start Queue Service.

  3. Mulai Azure Storage Explorer, jika belum dimulai.

  4. Di Azure Storage Explorer, pilih Tambahkan Pesan:

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

  5. Pada dialog yang muncul, masukkan pesan dan pilih OK. Anda sekarang melihat detail pesan yang Anda buat.

    Screenshot that shows message details.

  6. Dalam Visual Studio Code, fungsi Anda sekarang dapat berjalan. Di terminal, Anda sekarang akan melihat pesan yang dicetak sebagai baris terakhir.

    Fungsi Anda dapat menggunakan pesan antrean dan menulis kontennya.

Selamat! Anda sudah membangun fungsi Azure di Go yang dapat memicu pesan antrean. Anda juga mengurai pesan itu.

Anda bebas melakukan apa pun kepada pesan yang masuk. Misalnya, Anda dapat menyimpannya dalam database atau mungkin mengirimkannya sebagai payload dalam permintaan web.