Pular para o conteúdo

Webhooks

Queuety pode enviar notificações POST HTTP para URLs externas quando eventos específicos ocorrerem. Use webhooks para integrar sistemas de monitoramento, Slack ou painéis personalizados.

Eventos compatíveis

Evento Disparado quando
job.completed Uma tarefa de handler simples ou uma classe Contracts\Job termina com sucesso (não é disparado para etapas de fluxo de trabalho nem ações de máquina de estados)
job.failed Uma tentativa gera uma exceção e um novo processamento é agendado
job.buried Uma tarefa esgota todas as tentativas de processamento
workflow.failed Uma etapa do fluxo de trabalho falha permanentemente

Registrando webhooks

Por meio de PHP:

PHP
$id = Queuety::webhook_notifier()->register( 'job.buried', 'https://hooks.slack.com/services/...' );

Por meio de CLI:

Shell
wp queuety webhook add job.buried https://hooks.slack.com/services/...
wp queuety webhook add workflow.failed https://monitoring.example.com/queuety

Listando webhooks

PHP
$webhooks = Queuety::webhook_notifier()->list();
Shell
wp queuety webhook list

Removendo webhooks

PHP
Queuety::webhook_notifier()->remove( $webhook_id );
Shell
wp queuety webhook remove 3

Formato do payload

Quando um evento é disparado, Queuety envia uma solicitação POST HTTP com um corpo JSON. O payload sempre tem este formato:

JSON
{
    "event": "job.buried",
    "data": {
        "job_id": 42,
        "handler": "send_email",
        "queue": "emails",
        "error_message": "Connection timed out"
    },
    "timestamp": "2025-03-15T14:30:00Z"
}

Em caso de falhas no fluxo de trabalho:

JSON
{
    "event": "workflow.failed",
    "data": {
        "workflow_id": 7,
        "job_id": 42,
        "handler": "CallLlmStep",
        "error_message": "API rate limit exceeded"
    },
    "timestamp": "2025-03-15T14:30:00Z"
}

A entrega de webhooks é feita no melhor esforço possível. O worker envia uma solicitação a cada URL registrado, em sequência, com um tempo limite de um segundo para a resposta, e ignora falhas de entrega. Assim, um endpoint lento pode ocupar o worker por até cerca de um segundo por URL, mas nunca faz a tarefa falhar.

Casos de uso

  • Alertas Slack. Receba notificações quando tarefas forem colocadas em espera ou fluxos de trabalho falharem.
  • Integração PagerDuty. Acione incidentes para falhas críticas em tarefas.
  • Painéis personalizados. Transmita eventos para sua própria infraestrutura de monitoramento.
  • Trilha de auditoria. Encaminhe eventos para um serviço externo de registro.