---
title: Meddelandekö
image: /images/user-guide/emails/emails_header.png
---

<Frame>
  <img src="/images/user-guide/emails/emails_header.png" alt="Header" />
</Frame>

Queues facilitate async operations to be performed. De kan användas för att utföra bakgrundsuppgifter som att skicka ett välkomstmejl vid registrering.
Varje användningsfall kommer att ha sin egen köklass som ärver från `MessageQueueServiceBase`.

För närvarande stödjer vi endast `bull-mq`[bull-mq](https://bullmq.io/) som ködrivrutin.

## Steg för att skapa och använda en ny kö

1. Add a queue name for your new queue under enum `MESSAGE_QUEUES`.
2. Ge fabriksimplementeringen av kön med könamnet som beroendetoken.
3. Injicera kön som du skapade i den behövda modulen/tjänsten med könamnet som beroendetoken.
4. Lägg till arbetsklass med token-baserad injektion precis som producenten.

### Exempel på användning

```ts
class Resolver {
  constructor(@Inject(MESSAGE_QUEUES.custom) private queue: MessageQueueService) {}

  async onSomeAction() {
    //business logic
    await this.queue.add(someData);
  }
}

//async worker
class CustomWorker {
  constructor(@Inject(MESSAGE_QUEUES.custom) private queue: MessageQueueService) {
    this.initWorker();
  }

  async initWorker() {
    await this.queue.work(async ({ id, data }) => {
      //worker logic
    });
  }
}
```

