Opções alternativas para a fila de trabalhos agendados?

1

Eu realmente gosto de usar filas para comunicação entre processos. É ótimo poder gerar uma tonelada de trabalhadores e ter a garantia de que um trabalho na fila é executado apenas uma vez, é tratado com justiça, pode ser dimensionado horizontalmente e pode expirar opcionalmente se não for tratado com rapidez suficiente.

No entanto, não consigo encontrar uma implementação de fila de tarefas que também suporte a colocação de tarefas na fila em um horário especificado.

Qual é a melhor maneira de atacar esse problema? Existe uma fila como essa?

Até agora, minhas alternativas para essa fila são:

  1. beanstalkd - suporta tarefas atrasadas, eu poderia calcular o delta entre agora e o tempo especificado.
    • impreciso: o que acontece nas alterações de fuso horário ou deltas realmente grandes (meses)
  2. Comando "at" - cria um trabalho que giraria e colocaria o trabalho de planejamento em uma fila no horário especificado.
    • ligado a uma única máquina: o que acontece se o sistema for reiniciado? Como você leva os trabalhos para um novo servidor? Ponto único de falha
    • manipular manualmente a expiração se você tiver um tempo de inatividade longo.
  3. delayed_job / polling personalizado - crie um daemon (algo como delayed_job) que pesquisa continuamente um banco de dados de tarefas agendadas e as insere na fila no horário especificado
    • parece muito complicado
por case nelson 04.11.2011 / 15:00

1 resposta

1

Algo como o o Agendador de trabalhos do Open Source pode ser apropriado ...

    
por 04.11.2011 / 15:06