Pular para o conteúdo principal

Minion

Tipo: Documentação Oficial
Autor(es): Sebastian Riedel e colaboradores
Publicado: 2014 (atualizado continuamente)
Acessado: 2026-06-27

Relevância

Minion é o sistema de filas de jobs nativo do ecossistema Mojolicious. Oferece jobs persistentes com retry automático, prioridades, agendamento, concorrência configurável e uma interface web de administração. Suporta múltiplos backends; no stack Crystallized Perl, usa Minion::Backend::Pg — o mesmo PostgreSQL da aplicação, sem serviço adicional.

A distinção central entre Minion e PgQue (ADR-022) é o escopo — ambos hoje em PostgreSQL, mas em instâncias dedicadas distintas (db-jobs/db-events, ADR-023):

CaracterísticaMinionPgQue
ProcessoMesmo ecossistema (worker Perl)Consumidores nomeados, fan-out real
RoteamentoPor tipo de taskPor tipo de evento (type), cursor por consumidor
BackendPostgreSQL, instância db-jobsPostgreSQL, instância db-events
Caso de usoJobs internos persistentesNotificação de múltiplos consumidores desacoplados

Na aplicação Stega (ADR-018), o Minion processa jobs que pertencem ao domínio da aplicação (verificação de SLA, processamento de webhooks recebidos, relatórios), enquanto o PgQue conecta a Stega com serviços externos de notificação (NotificationWorker).

Referenciada em

  • ADR-008 — Minion citado como alternativa complementar ao RabbitMQ para jobs internos (histórico)
  • ADR-018 — Stega usa Minion com Minion::Backend::Pg para jobs assíncronos internos
  • ADR-022 — cita Minion::Backend::Pg como prova de conceito já em produção do padrão SKIP LOCKED/LISTEN/NOTIFY que fundamenta a adoção do PgQue no lugar do RabbitMQ (aceita em 2026-07-07)
  • ADR-023 — Minion passa a usar uma instância PostgreSQL própria (db-jobs), nunca a mesma de db-app
  • ADR-024Minion.pm não roda nativamente no Windows (fork() emulado via ithreads); ADR Proposta, pendência de pesquisa sobre se o PgQue pode cobrir os cenários de job atuais
  • ADR-025 — Minion não tem agendador recorrente embutido (só delay, para uma execução única); motiva o processo dedicado (script/report_scheduler) que enfileira jobs periodicamente