# Use o template QStash EdgeFunction Scheduler

import Tag from '~/components/webkit/Tag.vue';

<Tag severity="info">
Preview
</Tag>

O template **QStash EdgeFunction Scheduler** foi projetado para configurar e gerenciar uma function personalizada, que recebe um agendamento configurado pelo usuário e o despacha através do QStash, agendador e gestor de tarefas e mensagens para tempos de execução serverless.

---

## Pré-requisitos

Antes de usar este template, você precisa:

- Criar uma [conta no Upstash](https://console.upstash.com/).
- No [console do Upstash](https://console.upstash.com/qstash), obter sua **Current Signing Key**, a **Next Signing Key** e o **QStash Token** na aba **QStash**.
- Ter uma [conta no GitHub](https://github.com/signup) para conectar com a Azion e criar seu novo repositório.
  - Cada push será implantado automaticamente neste repositório para manter seu projeto atualizado.
- O template usa [Functions](/pt-br/documentacao/produtos/build/applications/functions/). Isso pode gerar custos relacionados ao uso. Consulte a [página de preços](/pt-br/documentacao/produtos/precos/) para mais informações.

:::caution[Atenção]
Qualquer custo gerado pelo uso do Qstash será processado e cobrado separadamente na plataforma Upstash. Visite a [documentação do QStash](https://upstash.com/docs/qstash/overall/getstarted) para obter mais detalhes.
:::

---

## Implante o template

Você pode obter e configurar seu template pelo Azion Console. Para implantá-lo facilmente no edge, clique no botão abaixo.

  <DocButton
    label="Implantar"
    href="https://console.azion.com/create/upstash/qstash-edgefunction-scheduler"
    icon="ai ai-azion"
    size="medium"
  />

---

## Configure o template

No formulário de configuração, forneça as informações para configurar sua aplicação. Preencha os campos apresentados.

Os campos identificados com asterisco são obrigatórios.

1. Conecte a Azion com sua conta no GitHub.
2. Selecione o **Git Scope** com o qual trabalhar.
3. Defina um nome para sua application.
4. Complete os campos:
- **QStash Current Signing Key** *: uma string para assinar todas as mensagens enviadas para o destino.
   - Acesse o console do Upstash e copie a informação `QSTASH_CURRENT_SIGNING_KEY` na aba **Qstash**.
- **QStash Next Signing Key** *: uma string usada para assinar mensagens depois de você ter girado suas chaves de assinatura.
   - Acesse seu console do Upstash e copie a informação `QSTASH_NEXT_SIGNING_KEY` na aba **Qstash**.
4. Clique no botão **Deploy** para iniciar o processo de implantação.

---

## Agende tarefas

Depois que a implantação for concluída e propagada, você poderá começar a agendar tarefas.

:::note
As tarefas devem ser agendadas em qualquer formato que possa ser transmitido em uma requisição HTTP, como JSON, XML, ou binary. Os exemplos abaixo estão usando JSON.
:::

Para fazer isso, você tem duas opções: [via terminal](#via-terminal) ou [via console Upstash](#via-console-do-upstash).

### Via terminal

1. Obtenha seu domínio da application.
2. No [console do Upstash](https://console.upstash.com/qstash), copie a informação `QSTASH_TOKEN` na aba **QStash**.
3. Em seu ambiente de desenvolvimento, abra o terminal.
4. Faça uma requisição HTTP POST para a URL especificada para agendar suas mensagens.

Use os seguintes exemplos para sua solicitação, de acordo com o intervalo necessário:

#### Uma vez

```bash
curl --request POST "https://qstash.upstash.io/v1/publish/{add your domain here}" \
     -H "Authorization: Bearer {add your QStash token here}" \
     -H "Content-Type: application/json" \
     -d "{ \"hello\": \"world\"}"
```

#### A cada minuto

```bash
curl --request POST "https://qstash.upstash.io/v1/publish/{add your domain here}" \
     -H "Authorization: Bearer {add your QStash token here}" \
     -H "Content-Type: application/json" \
     -H "Upstash-Cron: * * * * *" \
     -d "{ \"hello\": \"world\"}"
```

#### A cada 10 minutos

```bash
curl --request POST "https://qstash.upstash.io/v1/publish/{add your domain here}" \
     -H "Authorization: Bearer {add your QStash token here}" \
     -H "Content-Type: application/json" \
     -H "Upstash-Cron: */10 * * * *" \
     -d "{ \"hello\": \"world\"}"
```

#### A cada hora

```bash
curl --request POST "https://qstash.upstash.io/v1/publish/{add your domain here}" \
     -H "Authorization: Bearer {add your QStash token here}" \
     -H "Content-Type: application/json" \
     -H "Upstash-Cron: 0 * * * *" \
     -d "{ \"hello\": \"world\"}"
```

Pronto. A sua tarefa está agendada e será executada de acordo o agendamento definido.
Suas tarefas agendadas ficam visíveis no [console do Upstash](https://console.upstash.com/qstash), dentro da aba *QStash**, para sua revisão e monitoramento.

### Via console do Upstash

1. Copie seu domínio da application da Azion.
2. Vá para o [console do Upstash](https://console.upstash.com/qstash) e abra a aba **QStash**.
3. Preencha o formulário com as informações solicitadas.
- No campo Type, selecione **Scheduled** e escolha o delay.
- Como alternativa, selecione **Once** para enviar uma mensagem imediata e uma única vez.
4. Clique no botão **Schedule**.

Pronto. Sua tarefa está agendada e visível na seção **Scheduled Jobs** para sua revisão e monitoramento.

:::note
Você também pode publicá-los usando uma request do tipo API REST. Para mais informações, leia a [documentação do QStash](https://upstash.com/docs/qstash/api-reference/messages/publish-a-message).
:::

---

## Gerencie o template

Para gerenciar e editar as configurações da sua application na Azion, siga estas etapas:

1. [Acesse o Azion Console](https://console.azion.com).
2. No canto superior esquerdo, selecione **Products menu** > **Applications**.
3. Encontre a application relacionada ao template **Qstash Scheduler** e selecione-a.

### Adicionar um domínio personalizado

import DocButton from '~/components/webkit/DocButton.vue';

<DocButton href="/pt-br/documentacao/produtos/guias/configurar-dominio/" label="consulte o guia para configurar domínios" kind="secondary" size="medium" /> 

---