Skip to main content
Shoryuken é um processador de mensagens baseado em threads para o AWS SQS. O AppSignal instrumenta o Shoryuken automaticamente quando a gem Shoryuken é detectada na inicialização. Nenhuma instalação manual é necessária se o Shoryuken faz parte de um app Rails. Se você está usando um app Shoryuken autônomo, consulte nosso guia de integração.

Performance monitoring

Event timeline

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

Incident grouping

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

Enqueue instrumentation

Enfileirar um job do Shoryuken registra um event enqueue.shoryuken, com o título baseado no job sendo enfileirado. 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 a batch

Se um app usa um worker com a opção :batch => true, esse worker processa várias mensagens no mesmo tick. Isso requer a gem Ruby 2.11.3 ou superior, que adiciona suporte à opção batch.

Aplicação de exemplo

Temos uma aplicação de exemplo para um app Shoryuken autônomo disponível no nosso repositório de examples no GitHub.

Atributos de span

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 roda no mesmo trace que o 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. O trace é transportado nos atributos de mensagem do SQS. O SQS permite no máximo dez por mensagem, então uma mensagem que já usa todos os dez é enviada sem trace. Mensagens recebidas em lotes não continuam um trace. Um lote é tratado como uma única unidade, então não há um único trace ao qual ele possa pertencer. Saiba mais sobre distributed tracing.