> For the complete documentation index, see [llms.txt](https://cross-packages.gitbook.io/cross-api/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cross-packages.gitbook.io/cross-api/pt-br/providers/queue.md).

# Queue

Um serviço de fila para executar tarefas em segundo plano ou programá-las para serem executadas em um determinado momento.

## 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,
});
```

**Repeat:** Agenda uma tarefa em segundo plano, que repete indefinidamente no intervalo estipulado.

```typescript
await this.queueProvider.repeat({
  job: Example,
  client: 'tenantId'
  data: {
    message: 'Essa é a mensagem',
  },
  interval: '30d',
  attempts: 3,
});
```

**Close:** É usado para fechar a conexão com o redis.

```typescript
await this.queueProvider.close();
```

***
