> For the complete documentation index, see [llms.txt](https://serverless-workshop.gitbook.io/azure/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://serverless-workshop.gitbook.io/azure/5.-send-melding-fra-funksjon.md).

# 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`&#x20;

![](/files/-LeQnKK7Pg_ZtNqzLe_X)

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

```csharp
[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 `myqueue`så denne kan vi benytte oss av nå.
* Legg til en parameter i funksjonen som gir deg tilgang til køen:

```csharp
[Queue ("myqueue", Connection = "AzureWebJobsStorage")] ICollector<string> myQueue
```

* Signaturen i funksjonen bør da se slik ut:

```csharp
[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`:

```csharp
var messageToSendToQueue= new{ text = "the message I want to send"};
var jsonMessage= JsonConvert.SerializeObject(messageToSendToQueue);
```

* Meldingen kan nå legges på køen:

```csharp
myQueue.Add(jsonMessage);
```

* Legg inn returkode til slutt:

```csharp
return new OkResult();
```

* Den komplette funksjonen ser da slik ut:

```csharp
[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 `F5`for å 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

![](/files/-Le_Mo_w61HILMkaHxOW)

* Benytt PostMan eller lignende til å gjøre et kall mot denne adressen hos deg
* Du skal få `200 OK`tilbake og i konsollet i Visual Studio Code bør du se at meldingen ble sendt av en funksjon og mottatt av den andre:

![](/files/-Le_NaGmpXW530yyIS4p)
