Skip to main content
Que é uma alternativa de alta performance ao Delayed::Job ou Queue Classic que melhora a confiabilidade da sua aplicação protegendo seus jobs com as mesmas garantias ACID que o resto dos seus dados. O AppSignal instrumenta o Que automaticamente quando o Que é detectado na inicialização, rastreando exceptions e problemas de performance. Nenhuma configuração manual é necessária.

Performance monitoring

Event timeline

Jobs do Que aparecem na event timeline das actions de performance da sua aplicação como events perform_job.que.

Incident grouping

O AppSignal detecta os nomes dos jobs a partir do nome da classe do worker Que, sufixado com o nome do método run, resultando em algo como MyWorker#run. O AppSignal agrupa jobs por esse nome para performance monitoring e notificações.

Enqueue instrumentation

Enfileirar um job do Que registra um event enqueue.que, com o título baseado no job sendo enfileirado. Enqueues em lote na versão 2 do Que registram, em vez disso, um único event bulk_enqueue.que. O AppSignal registra events de enqueue na event timeline da transaction ativa, por exemplo, quando você enfileira um job a partir de uma requisição web ou de dentro de outro job. Ele só registra esses events quando uma transaction está ativa, então enfileirar um job fora de uma transaction não registra nada. Para parar de registrar events de enqueue em todas as integrações de background job, defina a opção de configuração enable_job_enqueue_instrumentation como false. Isso não afeta a instrumentação dos jobs em si.

Suporte ao Active Job

A integração com Que é compatível com Active Job. Atualize para a versão 2.11.0 da gem Ruby ou mais nova para um suporte aprimorado.

Aplicação de exemplo

Temos uma aplicação de exemplo no nosso repositório de examples no GitHub.

Span attributes

Somente no modo collector: isso se aplica quando o AppSignal para Ruby é executado no modo collector. Nos demais casos, não tem efeito.
O enqueue e o span do próprio job carregam:
  • messaging.system — a biblioteca de filas.
  • messaging.destination.name — a fila na qual o job foi colocado.
  • messaging.operation.type — se o span é o enqueue ou a execução do job.
Um span de um job que gerou um erro também carrega error.type, a classe do erro.

Distributed tracing

Somente no modo collector: isso se aplica quando o AppSignal para Ruby é executado no modo collector. Nos demais casos, não tem efeito.
Um job é executado no mesmo trace do código que o enfileirou, aparecendo sob a requisição ou o job que o agendou. Você pode rastrear um job lento até o que causou sua execução. Jobs enfileirados com Que.bulk_enqueue são a exceção. Eles não aparecem sob o trace que os enfileirou. Cada job recebe seu próprio trace, vinculado ao enfileiramento em lote, porque um único enfileiramento não pode ser pai de um lote inteiro. O trace é transportado nas tags do job. Que tem tags a partir da versão 1.0, então nada é transportado no Que 0.x. Que permite no máximo cinco tags por job. Um job sem espaço restante para o trace é enfileirado sem um. Leia mais sobre distributed tracing.