Cvičení – zpracování zprávy fronty

Dokončeno

V tomto cvičení rozšíříte aplikaci o trasu, která se může aktivovat ve zprávě ve frontě zpráv.

Poznámka:

Než začnete s tímto cvičením, ujistěte se, že jste stáhli rozšíření Azurite, stáhli Průzkumník služby Azure Storage a stáhli nástroje Azure Functions Core Tools.

Generování uživatelského rozhraní aplikace

V tomto cvičení začneme s novou aplikací Azure Functions. Vytvořte nový adresář a umístěte ho do něj.

  1. Vyberte paletu příkazů Zobrazit>.

  2. Vyberte Azure Functions: Vytvořit nový projekt.

  3. Vyberte složku, obvykle vaši aktuální složku.

  4. V části Vybrat jazyk vyberte Vlastní obslužnou rutinu.

  5. V části Vybrat šablonu pro první funkci vyberte HttpTrigger.

  6. Pojmenujte aplikaci, například queueTrigger.

  7. Vyberte úroveň autorizace anonymního uživatele. Pokud chcete, můžete to později změnit.

  8. V kořenovém adresáři vytvořte soubor s názvem server.go. Projekt by teď měl mít následující soubory:

    queueTrigger/
      function.json
    .funcignore
    .gitignore
    host.json
    local.settings.json
    proxies.json
    server.go 
    
  9. Přejděte do souboru function.json v queueTrigger adresáři. Najděte první položku vazby v elementu type :

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

    Změňte tuto položku vazby na tuto konfiguraci:

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

    V tomto kroku nastavíte name vlastnost. Později na něj budete odkazovat v kódu. Změnili jste také typ triggeru na queueTrigger, který umožňuje naslouchat zprávům ve frontě.

    Hodnota queueName odkazuje na konkrétní frontu. Když emulátor spustíte později, vytvoříte frontu s takovým názvem.

    Nakonec jste v local.settings.json uvedli proměnnou, která bude obsahovat připojovací řetězec do fronty.

Vytvoření aplikace

V tuto chvíli máte kostru aplikace. Teď jste připraveni přidat kód, který dokáže zpracovávat příchozí zprávy fronty.

  1. Otevřete soubor server.go a přidejte následující kód:

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

    Nyní máte nastavenou trasu na /queueTriggeradrese .

  2. Najděte oddíl importu a přidejte do něj následující struktury:

    type InvokeRequest struct {
      Data     map[string]json.RawMessage
      Metadata map[string]interface{}
    }
    
  3. Vyhledejte metodu queueHandler() a přidejte ji následujícím způsobem:

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

    Kód nejprve přečte tělo z příchozího streamu odpovědi a dekóduje ho:

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

    Pak je zpráva sama vykopaná voláním Unmarshal():

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

    Teď, když máte zprávu, ji vytiskneme.

  4. Přidejte následující kód:

    fmt.Println(parsedMessage) // your message
    

    Váš kód je teď napsaný, ale potřebujete nakonfigurovat projekt, abyste ho mohli otestovat.

  5. V souboru host.json najděte defaultExecutablePath prvek a dejte mu hodnotu ./server.

    Poznámka:

    Pro Windows byste použili hodnotu .\server.exe.

  6. Sestavte soubor server.go spuštěním go build v kořenovém adresáři projektu:

    go build server.go
    

Konfigurace prostředí

Dalším krokem je konfigurace prostředí. Vzhledem k tomu, že vyvíjíte místně, musíte ho nastavit tak, abyste mohli mluvit s emulovanou frontou zpráv.

  1. V souboru local.settings.json najděte volaný AzureWebJobsStorage prvek Values (nebo ho přidejte, pokud chybí). Dejte jí hodnotu UseDevelopmentStorage=true. Položka JSON by měla vypadat takto:

    "AzureWebJobsStorage" : "UseDevelopmentStorage=true"
    
  2. Spusťte rozšíření Azurite tak, že otevřete paletu příkazů (Zobrazit>paletu příkazů) a pak vyberete Azurite: Spustit službu fronty.

    Poznámka:

    Tento krok vytvoří v projektu nějaké místní soubory.

  3. Otevřete Průzkumník služby Azure Storage. Na levé straně se zobrazí obsah emulátoru.

  4. Klikněte pravým tlačítkem myši na uzel Fronty a vyberte možnost pro vytvoření nové fronty. Pojmenujte položky.

    Snímek obrazovky znázorňující emulátor v Průzkumník služby Azure Storage s vytvořenou novou frontou

    Poznámka:

    Frontu můžete pojmenovat podle potřeby. Chystáte se ale nakonfigurovat function.json soubor. Ať už tady pojmenujete frontu, musíte přejít do function.json.

  5. Vyhledejte function.json pod adresářem queueTrigger . Ujistěte se, že pole bindings obsahuje následující položku:

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

    Vlastnost queueName má stejný název jako fronta, kterou jste vytvořili v Průzkumník služby Azure Storage. Vlastnost connection odkazuje na hodnotu, kterou jste nastavili v local.settings.json.

    Vlastnost name má hodnotu queueItem. Kód Go používá tuto hodnotu k parsování zprávy fronty.

Spustit aplikaci

V tuto chvíli je všechno nastavené. Stačí spustit aplikaci, spustit Průzkumník služby Azure Storage a vytvořit zprávu fronty. Váš kód by měl tuto zprávu využívat.

  1. V terminálu spusťte func start příkaz v kořenovém adresáři projektu:

    func start
    
  2. V editoru Visual Studio Code otevřete paletu příkazů a spusťte Azurite: Start Queue Service.

  3. Spusťte Průzkumník služby Azure Storage, pokud ještě není spuštěný.

  4. V Průzkumník služby Azure Storage vyberte Přidat zprávu:

    Snímek obrazovky znázorňující výběr pro přidání zprávy do fronty

  5. V zobrazeném dialogovém okně zadejte zprávu a vyberte OK. Teď uvidíte podrobnosti o vytvořené zprávě.

    Snímek obrazovky znázorňující podrobnosti zprávy

  6. V editoru Visual Studio Code by teď měla být vaše funkce spuštěná. V terminálu by se teď měla zobrazit zpráva vytištěná jako poslední řádek.

    Vaše funkce mohla využívat zprávu fronty a zapisovat její obsah.

Gratulujeme! Vytvořili jste funkci Azure v Go, která se může aktivovat ve zprávě fronty. Tuto zprávu jste také parsovali.

Co děláte s příchozí zprávou, je na vás. Můžete ho například uložit do databáze nebo ji můžete odeslat jako datovou část ve webové žádosti.