แบบฝึกหัด - จัดการข้อความคิว

เสร็จสมบูรณ์เมื่อ

ในแบบฝึกหัดนี้ คุณจะขยายแอปพลิเคชันของคุณด้วยเส้นทางที่สามารถทริกเกอร์บนข้อความในคิวข้อความ

โน้ต

ก่อนที่คุณจะเริ่มแบบฝึกหัดนี้ตรวจสอบให้แน่ใจว่าคุณได้ดาวน์โหลดส่วนขยาย Azurite ดาวน์โหลด Azure Storage Explorerและ ดาวน์โหลดเครื่องมือ Azure Functions Core

ยกระดับแอป

สําหรับแบบฝึกหัดนี้ เราจะเริ่มต้นบนแอป Azure Functions ใหม่ สร้างไดเรกทอรีใหม่และใส่ตัวเองในนั้น

  1. เลือก >Command Palette

  2. เลือก ฟังก์ชัน Azure: สร้างโครงการใหม่

  3. เลือกโฟลเดอร์ โดยปกติแล้วจะเป็นโฟลเดอร์ปัจจุบันของคุณ

  4. ใน เลือกภาษาเลือก ตัวจัดการแบบกําหนดเอง

  5. ใน เลือกเทมเพลตสําหรับฟังก์ชันแรกของคุณ เลือก HttpTrigger

  6. ตั้งชื่อให้แอป เช่น queueTrigger

  7. เลือกระดับการตรวจสอบ แบบไม่ระบุชื่อ คุณสามารถเปลี่ยนได้ในภายหลังถ้าคุณต้องการ

  8. ที่ราก ให้สร้างไฟล์ที่ชื่อ server.go โครงการของคุณควรมีไฟล์ต่อไปนี้:

    queueTrigger/
      function.json
    .funcignore
    .gitignore
    host.json
    local.settings.json
    proxies.json
    server.go 
    
  9. ไปที่ไฟล์ function.json ในไดเรกทอรี queueTrigger ค้นหารายการการผูกแรกในองค์ประกอบ type:

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

    เปลี่ยนรายการการผูกกับการกําหนดค่านี้:

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

    ในขั้นตอนนี้ คุณตั้งค่าคุณสมบัติ name คุณจะได้อ้างอิงส่วนนี้ในโค้ดในภายหลัง คุณยังเปลี่ยนชนิดทริกเกอร์เป็น queueTriggerซึ่งทําให้สามารถฟังข้อความคิวได้

    ค่า queueName ชี้ไปยังคิวที่ระบุ เมื่อคุณเรียกใช้อีมูเลเตอร์ในภายหลัง คุณจะสร้างคิวด้วยชื่อดังกล่าว

    สุดท้าย คุณได้ชี้ตัวแปรใน local.settings.json ที่จะประกอบด้วยสตริงการเชื่อมต่อไปยังคิว

สร้างแอป

ในตอนนี้คุณมีโครงกระดูกของแอป ตอนนี้คุณพร้อมที่จะเพิ่มโค้ดที่สามารถจัดการข้อความคิวขาเข้าได้แล้ว

  1. เปิดไฟล์ server.go และเพิ่มโค้ดต่อไปนี้:

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

    ขณะนี้คุณมีการตั้งค่าเส้นทางที่ /queueTriggerแล้ว

  2. ค้นหาส่วนการนําเข้าและเพิ่มโครงสร้างต่อไปนี้ที่ด้านล่าง:

    type InvokeRequest struct {
      Data     map[string]json.RawMessage
      Metadata map[string]interface{}
    }
    
  3. ค้นหาวิธีการ queueHandler() และเพิ่มการอัปเดตด้วยวิธีต่อไปนี้:

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

    โค้ดแรกอ่านเนื้อความจากสตรีมคําตอบขาเข้าและถอดรหัส:

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

    จากนั้น ตัวข้อความเองจะถูกขุดด้วยการเรียกไปยัง Unmarshal():

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

    ตอนนี้คุณมีข้อความแล้ว ลองพิมพ์ออกมาดู

  4. เพิ่มโค้ดต่อไปนี้:

    fmt.Println(parsedMessage) // your message
    

    ตอนนี้รหัสของคุณได้รับการเขียนแล้ว ทั้งหมด แต่คุณต้องกําหนดค่าโครงการของคุณเพื่อให้คุณสามารถทดสอบได้

  5. ในไฟล์ host.json ให้ค้นหาองค์ประกอบ defaultExecutablePath และกําหนดค่าของ ./server

    โน้ต

    สําหรับ Windows คุณจะใช้ค่า ของ .\\server.exe

  6. สร้างไฟล์ server.go โดยการเรียกใช้ go build ที่รากของโครงการ:

    go build server.go
    

กําหนดค่าสภาพแวดล้อม

ขั้นตอนถัดไปคือการกําหนดค่าสภาพแวดล้อมของคุณ เนื่องจากคุณกําลังพัฒนาภายในเครื่อง คุณจําเป็นต้องตั้งค่าเพื่อให้คุณสามารถพูดคุยกับคิวข้อความที่ฝังอยู่ได้

  1. ในไฟล์ local.settings.json ให้ค้นหาองค์ประกอบใน Values ที่เรียกว่า AzureWebJobsStorage (หรือเพิ่มหากหายไป) ให้ค่า UseDevelopmentStorage=true รายการ JSON ของคุณควรมีลักษณะดังนี้:

    "AzureWebJobsStorage" : "UseDevelopmentStorage=true"
    
  2. เริ่มส่วนขยาย Azurite โดยการเปิด Command Palette (View>Command Palette) แล้วเลือก Azurite: Start Queue Service

    โน้ต

    ขั้นตอนนี้จะสร้างไฟล์ภายในเครื่องบางไฟล์ในโครงการของคุณ

  3. เปิด Azure Storage Explorer ทางด้านซ้าย สามารถมองเห็นเนื้อหาของตัวจําลองได้

  4. คลิกขวาที่โหนด คิว และเลือกตัวเลือกเพื่อสร้างคิวใหม่ ตั้งชื่อ รายการ

    สกรีนช็อตที่แสดงตัวจําลองใน Azure Storage Explorer พร้อมคิวใหม่ที่สร้างขึ้น

    โน้ต

    คุณสามารถตั้งชื่อคิวว่าอะไรที่คุณต้องการ อย่างไรก็ตาม คุณกําลังจะกําหนดค่าไฟล์ function.json ของคุณ ไม่ว่าคุณจะตั้งชื่อคิวที่นี่อย่างไร ก็ให้เข้าไปใน function.json

  5. ค้นหา function.json ภายใต้ไดเรกทอรี queueTrigger ตรวจสอบให้แน่ใจว่าอาร์เรย์ bindings มีรายการต่อไปนี้:

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

    คุณสมบัติ queueName มีชื่อเดียวกันกับคิวที่คุณสร้างขึ้นใน Azure Storage Explorer คุณสมบัติ connection จะชี้ไปยังค่าที่คุณตั้งค่าใน local.settings.json

    คุณสมบัติ name มีค่า queueItem รหัสไปของคุณใช้ค่านี้เพื่อแยกวิเคราะห์ข้อความคิว

เรียกใช้แอป

ณ จุดนี้ทุกอย่างถูกตั้งค่าไว้แล้ว สิ่งที่คุณต้องทําคือเรียกใช้แอป เริ่ม Azure Storage Explorer และสร้างข้อความคิว โค้ดของคุณควรสามารถใช้ข้อความนั้นได้

  1. จากเทอร์มินัล ให้เรียกใช้คําสั่ง func start ในรากของโครงการ:

    func start
    
  2. ใน Visual Studio Code ให้เปิด Command Palette และเรียกใช้ Azurite: Start Queue Service

  3. เริ่ม Azure Storage Explorer ถ้ายังไม่ได้เริ่ม

  4. ใน Azure Storage Explorer ให้เลือก เพิ่มข้อความ:

    สกรีนช็อตที่แสดงการเลือกสําหรับการเพิ่มข้อความในคิว

  5. ในกล่องโต้ตอบที่ปรากฏขึ้น ใส่ ข้อความ และเลือก ตกลง ในตอนนี้ คุณสามารถดูรายละเอียดของข้อความที่คุณสร้างขึ้นได้แล้ว

    สกรีนช็อตที่แสดงรายละเอียดข้อความ

  6. ใน Visual Studio Code ฟังก์ชันของคุณควรทํางานแล้วในขณะนี้ ในเทอร์มินัล คุณควรเห็นข้อความ พิมพ์เป็นแถวสุดท้าย

    ฟังก์ชันของคุณจะสามารถใช้ข้อความคิวและเขียนเนื้อหาได้

ยินดีด้วย! คุณสร้างฟังก์ชัน Azure ในไปซึ่งสามารถทริกเกอร์บนข้อความคิวได้ คุณยังแยกวิเคราะห์ข้อความนั้นด้วย

สิ่งที่คุณทํากับข้อความขาเข้าขึ้นอยู่กับคุณ ตัวอย่างเช่น คุณสามารถจัดเก็บไว้ในฐานข้อมูล หรืออาจส่งเป็นส่วนข้อมูลในการร้องขอของเว็บ