# Queue

## Disponíveis:

* Bee
* Bull
* Kue
* Fake

## Trabalhos:

A estrutura é simples, deve ser uma classe com um método estático `key` para recuperar sua chave e um método público `handle` para executar a tarefa. Todos os outros recursos POO para distribuir a lógica são permitidos.

```typescript
export class Example {
  public static get key(): Capitalize<string> {
    return 'Example';
  }

  public async handle({ data }: { data: { message: string } }): Promise<void> {
    return console.log('Eu tenho uma mensagem para você: %s', data.message);
  }
}
```

## Métodos:

**Execute:** Executa uma tarefa em segundo plano, caso falhe repete uma determinada quantidade de vezes.

```typescript
await this.queueProvider.execute({
  job: Example,
  data: {
    message: 'Essa é a mensagem',
  },
  attempts: 3,
});
```

**Schedule:** Agenda uma tarefa em segundo plano, caso falhe repete uma determinada quantidade de vezes.

```typescript
await this.queueProvider.schedule({
  job: Example,
  data: {
    message: 'Essa é a mensagem',
  },
  delay: '30min',
  attempts: 3,
});
```

***
