Gyakorlat – Üzenetsor kezelése

Befejeződött

Ebben a gyakorlatban egy olyan útvonallal bővíti az alkalmazást, amely egy üzenetsor üzeneteiben aktiválható.

Feljegyzés

A gyakorlat megkezdése előtt győződjön meg arról, hogy letöltötte az Azurite-bővítményt, letöltötte az Azure Storage Explorert és letöltötte az Azure Functions Core Toolst.

Az alkalmazás állványzata

Ebben a gyakorlatban egy új Azure Functions-alkalmazással kezdjük. Hozzon létre egy új könyvtárat, és helyezze bele magát.

  1. Válassza a Megtekintés>Parancskatalógus lehetőséget.

  2. Válassza az Azure Functions: Új projekt létrehozása lehetőséget.

  3. Jelöljön ki egy mappát, általában az aktuális mappát.

  4. A Nyelv kiválasztása területen válassza az Egyéni kezelő lehetőséget.

  5. Az első függvény sablonjának kiválasztása területen válassza a HttpTrigger lehetőséget.

  6. Adjon nevet az alkalmazásnak, például queueTrigger.

  7. Válassza ki a névtelen engedélyezési szintet. Ezt később módosíthatja, ha szeretné.

  8. A gyökérkönyvtárban hozzon létre egy fájlt server.go néven. A projektnek most a következő fájlokkal kell rendelkeznie:

    queueTrigger/
      function.json
    .funcignore
    .gitignore
    host.json
    local.settings.json
    proxies.json
    server.go 
    
  9. Lépjen a könyvtárban található queueTrigger fájlhoz. Keresse meg az első kötési bejegyzést az type elemben:

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

    Módosítsa ezt a kötési bejegyzést erre a konfigurációra:

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

    Ebben a lépésben beállítja a tulajdonságot name . Később a kódban fog hivatkozni rá. Az eseményindító típusát queueTriggeris módosította, ami lehetővé teszi az üzenetsor-üzenetek meghallgatását.

    Az queueName érték egy adott üzenetsorra mutat. Az emulátor későbbi futtatásakor létre fog hozni egy ilyen nevű üzenetsort.

    Végül egy olyan változóra mutatott rá a local.settings.json, amely tartalmazni fogja a sorhoz kapcsolati sztringet.

Az alkalmazás létrehozása

Ezen a ponton van egy alkalmazásváz. Most már készen áll a bejövő üzenetsor-üzenetek kezelésére képes kód hozzáadására.

  1. Nyissa meg a server.go fájlt, és adja hozzá a következő kódot:

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

    Most már be van állítva egy útvonal a következő helyen /queueTrigger: .

  2. Keresse meg az importálási szakaszt, és adja hozzá a következő szerkezeteket:

    type InvokeRequest struct {
      Data     map[string]json.RawMessage
      Metadata map[string]interface{}
    }
    
  3. Keresse meg a metódust queueHandler() , és adja hozzá a következő módon:

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

    A kód először beolvassa a törzset a bejövő válaszfolyamból, és dekódolja azt:

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

    Ezután maga az üzenet ki van ásva a következő Unmarshal()hívással:

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

    Most, hogy már megvan az üzenet, nyomtassuk ki.

  4. Adja hozzá a következő kódot:

    fmt.Println(parsedMessage) // your message
    

    A kód már meg van írva, de konfigurálnia kell a projektet, hogy tesztelhesse.

  5. A host.json fájlban keresse meg az defaultExecutablePath elemet, és adjon neki értéket ./server.

    Feljegyzés

    Windows esetén a következő értéket .\\server.exehasználná: .

  6. Hozza létre a server.go fájlt a projekt gyökérkönyvtárában, úgy, hogy futtatja a go build parancsot.

    go build server.go
    

A környezet konfigurálása

A következő lépés a környezet konfigurálása. Mivel helyileg fejleszt, be kell állítania, hogy egy emulált üzenetsorhoz tudjon beszélni.

  1. A local.settings.json fájlban keresse meg a Values hívott AzureWebJobsStorage elemet (vagy adja hozzá, ha hiányzik). Adja meg az értéket UseDevelopmentStorage=true. A JSON-bejegyzésnek így kell kinéznie:

    "AzureWebJobsStorage" : "UseDevelopmentStorage=true"
    
  2. Indítsa el az Azurite bővítményt a parancskatalógus megnyitásával (parancskatalógus>), majd válassza az Azurite: Queue Service indítása lehetőséget.

    Feljegyzés

    Ez a lépés létrehoz néhány helyi fájlt a projektben.

  3. Nyissa meg az Azure Storage Explorert. A bal oldalon az emulátor tartalma látható.

  4. Kattintson a jobb gombbal az Üzenetsorok csomópontra, és válassza ki azt a lehetőséget, amely új üzenetsort hoz létre. Adja meg neki a névelemeket.

    Képernyőkép, amelyen az Azure Storage Explorer emulátor látható egy új létrehozott sorral.

    Feljegyzés

    A várólista nevét a kívántnak nevezheti el. Azonban a function.json fájl konfigurálására készül. Bárhogyan is nevezi el a sort, annak bele kell kerülnie az function.json-ba.

  5. Keresse meg function.json a queueTrigger könyvtár alatt. Győződjön meg arról, hogy a bindings tömb a következő bejegyzéssel rendelkezik:

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

    A queueName tulajdonság neve megegyezik az Azure Storage Explorerben létrehozott üzenetsor nevével. A connection tulajdonság arra az értékre mutat, amelyet a local.settings.json beállítottál.

    A name tulajdonság értéke queueItem. A Go-kód ezt az értéket használja az üzenetsor-üzenet elemzéséhez.

Az alkalmazás futtatása

Ezen a ponton minden be van állítva. Mindössze annyit kell tennie, hogy futtatja az alkalmazást, elindítja az Azure Storage Explorert, és létrehoz egy üzenetsor-üzenetet. A kódnak képesnek kell lennie arra, hogy felhasználja ezt az üzenetet.

  1. Egy terminálon futtassa a func start parancsot a projekt gyökérkönyvtárában:

    func start
    
  2. A Visual Studio Code-ban nyissa meg a parancskatalógust, és futtassa az Azurite: Queue Service indítása parancsot.

  3. Indítsa el az Azure Storage Explorert, ha még nem indult el.

  4. Az Azure Storage Explorerben válassza az Üzenet hozzáadása lehetőséget:

    Képernyőkép az üzenetsorhoz való üzenet hozzáadására szolgáló kijelölésről.

  5. A megjelenő párbeszédpanelen írja be az üzenetet , és válassza az OK gombot. Ekkor megjelenik a létrehozott üzenet részletei.

    Képernyőkép az üzenet részleteiről.

  6. A Visual Studio Code-ban a függvénynek most futnia kell. A terminálban most az utolsó sorként kinyomtatott üzenetnek kell megjelennie.

    A függvény képes volt felhasználni az üzenetsor-üzenetet, és kiírni annak tartalmát.

Gratulálunk! Létrehozott egy Azure-függvényt a Go-ban, amely aktiválható egy üzenetsoron. Ezt az üzenetet is elemezte.

A bejövő üzenetekkel kapcsolatos teendők önön múlik. Tárolhatja például egy adatbázisban, vagy elküldheti hasznos adatként egy webes kérelemben.