5. Legg melding på kø

På samme måte som en funksjon kan motta melding fra kø kan vi også sende melding til en kø.

  • Opprett en ny HTTP-triggered funksjon i ditt prosjekt

    • f.eks SendToQueue

    • denne funksjonen kan også være Anonymous

  • Endre signaturen til å bare trigge på POST og ta bort innholdet i den genererte funksjonen:

[FunctionName("SendToQueueFunc")]
public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
            ILogger log)
{
            
}
  • For å kunne sende en melding til en kø må vi i funksjonen ta i mot en referanse til køen. Fra tidligere har vi allerede opprettet myqueueså denne kan vi benytte oss av nå.

  • Legg til en parameter i funksjonen som gir deg tilgang til køen:

[Queue ("myqueue", Connection = "AzureWebJobsStorage")] ICollector<string> myQueue
  • Signaturen i funksjonen bør da se slik ut:

[FunctionName("SendToQueueFunc")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
    [Queue ("myqueue", Connection = "AzureWebJobsStorage")] ICollector<string> myQueue,
    ILogger log)
{
            
}
  • Nå har vi en referanse til køen og kan legge en melding på den

  • Start med å definere meldingen og serialisèr den til JSON:

var messageToSendToQueue= new{ text = "the message I want to send"};
var jsonMessage= JsonConvert.SerializeObject(messageToSendToQueue);
  • Meldingen kan nå legges på køen:

myQueue.Add(jsonMessage);
  • Legg inn returkode til slutt:

return new OkResult();
  • Den komplette funksjonen ser da slik ut:

[FunctionName("SendToQueueFunc")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req,
    [Queue ("myqueue", Connection = "AzureWebJobsStorage")] ICollector<string> myQueue,
    ILogger log)
{
    var messageToSendToQueue= new{ text = "the message I want to send"};
    var jsonMessage= JsonConvert.SerializeObject(messageToSendToQueue);

    myQueue.Add(jsonMessage);

    return new OkResult();
}
  • Trykk F5for å starte funksjonen slik at vi kan teste å legge en melding på køen

  • Siden vi nå har laget to funksjoner mot samme kø vil vi kunne sende en melding med den siste funksjonen vi opprettet og den vil bli lest ut av den funksjonen vi lagde tidligere

  • I output fra oppstart av funksjonene vi du kunne se at lokalt kjører nå HTTP funksjonen, f.eks slik

  • Benytt PostMan eller lignende til å gjøre et kall mot denne adressen hos deg

  • Du skal få 200 OKtilbake og i konsollet i Visual Studio Code bør du se at meldingen ble sendt av en funksjon og mottatt av den andre:

Last updated