Øvelse – Behandle en kømelding

Fullført

I denne øvelsen utvider du programmet med en rute som kan utløse en melding i en meldingskø.

Notat

Før du starter denne øvelsen, må du kontrollere at du har lastet ned Azurite-utvidelsen, lastet ned Azure Storage Explorerog nedlastede Azure Functions Core Tools.

Stillas i appen

For denne øvelsen starter vi på en ny Azure Functions-app. Opprett en ny katalog, og plasser deg selv i den.

  1. Velg Vis>kommandopalett.

  2. Velg Azure-funksjoner: Opprett nytt prosjekt.

  3. Velg en mappe, vanligvis gjeldende mappe.

  4. Velg Egendefinert behandlingi Velg et språk.

  5. Velg HttpTriggeri Velg en mal for den første funksjonen.

  6. Gi appen et navn, for eksempel queueTrigger.

  7. Velg et godkjenningsnivå for anonym. Du kan endre det senere hvis du vil.

  8. Opprett en fil med navnet server.goved roten. Prosjektet skal nå ha følgende filer:

    queueTrigger/
      function.json
    .funcignore
    .gitignore
    host.json
    local.settings.json
    proxies.json
    server.go 
    
  9. Gå til function.json-filen i katalogen queueTrigger. Finn den første bindingsoppføringen i type elementet:

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

    Endre bindingsoppføringen til denne konfigurasjonen:

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

    I dette trinnet angir du egenskapen name. Du vil se det senere i kode. Du har også endret utløsertypen til queueTrigger, noe som gjør det mulig å lytte til kømeldinger.

    Den queueName verdien peker ut en bestemt kø. Når du kjører emulatoren senere, oppretter du en kø med et slikt navn.

    Til slutt pekte du på en variabel i local.settings.json som vil inneholde tilkoblingsstrengen til køen.

Opprett appen

På dette tidspunktet har du et appskjelett. Nå er du klar til å legge til kode som kan håndtere innkommende kømeldinger.

  1. Åpne filen server.go, og legg til følgende kode:

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

    Du har nå konfigurert en rute på /queueTrigger.

  2. Finn importdelen, og legg til følgende strukturer under den:

    type InvokeRequest struct {
      Data     map[string]json.RawMessage
      Metadata map[string]interface{}
    }
    
  3. Finn queueHandler()-metoden, og legg den til på følgende måte:

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

    Koden leser først brødteksten fra innkommende svarstrøm og dekoder den:

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

    Deretter blir selve meldingen gravd ut med et kall til Unmarshal():

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

    Nå som du har meldingen, kan du skrive den ut.

  4. Legg til følgende kode:

    fmt.Println(parsedMessage) // your message
    

    Koden er nå skrevet, men du må konfigurere prosjektet slik at du kan teste det.

  5. Finn -elementet i defaultExecutablePath-filen, og gi den en verdi på ./server.

    Notat

    For Windows bruker du verdien .\\server.exe.

  6. Bygg filen server.go ved å kjøre go build på prosjektroten:

    go build server.go
    

Konfigurer miljøet

Det neste trinnet er å konfigurere miljøet. Fordi du utvikler lokalt, må du konfigurere det slik at du kan snakke med en emulert meldingskø.

  1. Finn et element i kalt Values (eller legg det til hvis det mangler) i AzureWebJobsStorage-filen. Gi den verdien UseDevelopmentStorage=true. JSON-oppføringen skal se slik ut:

    "AzureWebJobsStorage" : "UseDevelopmentStorage=true"
    
  2. Start Azurite-utvidelsen ved å åpne kommandopaletten (Vise>kommandopalett) og deretter velge Azurite: Start Køtjeneste.

    Notat

    Dette trinnet oppretter noen lokale filer i prosjektet.

  3. Åpne Azure Storage Explorer. Innholdet i emulatoren er synlig på venstre side.

  4. Høyreklikk på køer node, og velg alternativet for å opprette en ny kø. Gi den navnet elementer.

    skjermbilde som viser emulatoren i Azure Storage Explorer, med en ny kø opprettet.

    Notat

    Du kan gi køen navnet du vil ha. Du er imidlertid i ferd med å konfigurere function.json filen. Uansett hva du navngir køen her, må du gå til function.json.

  5. Finn function.json under queueTrigger katalogen. Kontroller at bindings matrisen har følgende oppføring:

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

    Egenskapen queueName har samme navn som køen du opprettet i Azure Storage Explorer. Egenskapen connection peker til verdien du satte opp i local.settings.json.

    Egenskapen name har verdien queueItem. Go-koden bruker denne verdien til å analysere kømeldingen.

Kjør appen

Nå er alt konfigurert. Alt du trenger å gjøre er å kjøre appen, starte Azure Storage Explorer og opprette en kømelding. Koden skal kunne bruke denne meldingen.

  1. Kjør kommandoen func start i prosjektroten fra en terminal:

    func start
    
  2. Åpne kommandopaletten i Visual Studio Code, og kjør Azurite: Start Queue Service.

  3. Start Azure Storage Explorer hvis den ikke allerede er startet.

  4. Velg Legg til meldingi Azure Storage Explorer:

    Skjermbilde som viser valget for å legge til en melding i køen.

  5. Skriv inn melding i dialogboksen som vises, og velg OK. Nå ser du detaljene for meldingen du opprettet.

    Skjermbilde som viser meldingsdetaljer.

  6. I Visual Studio Code skal funksjonen nå kjøre. I terminalen skal du nå se melding skrevet ut som siste rad.

    Funksjonen var i stand til å bruke kømeldingen og skrive ut innholdet.

Gratulerer! Du bygget en Azure-funksjon i Go som kan utløse på en kømelding. Du analyserte også meldingen.

Det du gjør med en innkommende melding, er opp til deg. Du kan for eksempel lagre den i en database eller kanskje sende den som nyttelast i en nettforespørsel.