Publique uma mensagem no Upstash QStash a partir de uma function
Publique uma mensagem no Upstash QStash a partir de uma function com uma chamada fetch e verifique se o QStash a aceitou antes de a function responder.
Você publica uma mensagem no Upstash QStash a partir de uma function, com o token do QStash que a function lê de uma variável de ambiente, e o QStash recebe a mensagem para o domínio de destino que você indica. Para fazer o deploy do template que recebe mensagens agendadas do QStash, consulte Use o template QStash Function Scheduler.
O QStash é uma fila de mensagens e um agendador de tarefas para runtimes serverless. Uma function que entrega trabalho a ele responde a quem a chamou sem esperar por esse trabalho, e só responde depois que o QStash aceita a mensagem, então uma publicação que falha nunca é informada como sucesso.
- A function lê o token do QStash e o domínio de destino de variáveis de ambiente.
- Ela envia a mensagem como um
POSTà URL de publicação do QStash, que termina no domínio de destino. - Um status entre 200 e 299 significa que o QStash recebeu a mensagem. Qualquer outro status significa que a mensagem não foi publicada, e a function informa uma falha.
Pré-requisitos
- Uma conta Upstash e o seu QStash Token, da aba QStash do Upstash Console. O uso do QStash é processado e cobrado separadamente na plataforma Upstash.
- O domínio que recebe as mensagens, como o domínio de uma function consumidora.
- A Azion CLI instalada e autorizada, para armazenar as variáveis de ambiente.
- Um projeto de function ao qual adicionar o código. Para criar um e fazer o deploy, consulte Faça o deploy de uma function com a Azion CLI.
Os exemplos armazenam o token e o destino como QSTASH_TOKEN e QSTASH_DESTINATION e publicam para consumer.example.com. Substitua esses valores e <qstash-token> pelos seus.
Armazene o token e o destino
A function lê os dois valores em tempo de execução, então o token nunca entra no código, e o destino muda sem uma edição no código. O token é confidencial, e o destino não. Uma key que contém token é enviada como secreta por padrão.
Para criar as duas variáveis com a Azion CLI:
Cada comando imprime o UUID da variável que criou:
Uma mudança em uma variável só chega a uma function depois de um novo deploy da function, então crie as duas antes de fazer o deploy do código da próxima seção. A conta guarda as duas variáveis, e a function lê cada uma com Azion.env.get().
Publique a mensagem a partir da function
A publicação é um POST a https://qstash.upstash.io/v1/publish/ seguido do domínio de destino, com o token do QStash como token Bearer e a mensagem como corpo. Uma function a envia com fetch(), e response.ok é true quando o status está no intervalo de 200 a 299.
Para publicar o corpo JSON de cada requisição, adicione este código ao entrypoint da function:
A mensagem pode estar em qualquer formato que uma requisição HTTP transporta, como JSON, XML ou binário, e este exemplo envia JSON. Faça o deploy da function, como mostra Faça o deploy de uma function com a Azion CLI.
Um POST à function publica o corpo dela no QStash para consumer.example.com, e a function responde {"published":true}. Quando o QStash não recebe a mensagem, a function registra no log QStash answered com o status e responde 500, então quem chama e tenta de novo em caso de erro envia a mensagem outra vez. Para ler essa linha de log, consulte Consultar logs de console de uma function.
Publique em um agendamento
Uma mensagem também pode se repetir em um agendamento. O header Upstash-Cron na mesma requisição de publicação recebe uma expressão cron, como * * * * * para cada minuto ou 0 * * * * para cada hora.
Para publicar em um agendamento, adicione o header à requisição em publish:
O QStash executa a mensagem no agendamento que você definiu, e o agendamento fica visível na aba QStash do Upstash Console para revisão e monitoramento. Cada requisição que chega à function cria um agendamento, então envie essa requisição uma vez por agendamento, e não em cada requisição que uma function atende.