Domanda

Ho già posto una domanda separata su come creare un evento con attivazione temporale in Java . Mi è stato presentato Quartz. Allo stesso tempo, lo google anche online, e la gente dice che cron in Unix è una soluzione ordinata.

Quale è meglio? Quali sono i contro e i pro?

Alcune specifiche del sistema: * Sistema operativo Unix * programma scritto in Java * Ho una coda di attività con oltre 1000 voci, per ogni timestamp potrebbero essere attivate fino a 500 attività.

È stato utile?

Soluzione

  1. L'uso di cron sembra aggiungere un altro punto di ingresso nell'applicazione, mentre Quartz si integrerebbe in esso. Quindi saresti costretto a gestire alcune comunicazioni tra processi se volessi passare alcune informazioni al / dal processo invocato da cron . In Quartz devi semplicemente (hehe) eseguire più thread.
  2. cron dipende dalla piattaforma, Quartz non lo è.
  3. Quartz può consentirti di assicurarti in modo affidabile che un'attività venga eseguita in un determinato momento o qualche tempo dopo se il server è rimasto inattivo per qualche tempo. Pure cron non lo farebbe per te (a meno che tu non lo gestisca manualmente).
  4. Quartz ha un linguaggio più flessibile per esprimere le occorrenze (quando le attività dovrebbero essere attivate).
  5. Considera l'impronta di memoria. Se le singole attività non condividono nulla o poco, potrebbe essere meglio eseguirle dal sistema operativo come processo separato. Se condividono molte informazioni, è meglio averle come thread all'interno di un processo.
  6. Non sono sicuro di come gestire il clustering nell'approccio cron . Quartz potrebbe essere utilizzato con Terracotta seguendo il modello di ridimensionamento (non ho provato ma credo che sia fattibile.

Altri suggerimenti

Il vantaggio di cron è che qualsiasi amministratore di sistema sa come usarlo ed è documentato in molti punti. Se cron farà il lavoro, sarebbe davvero la soluzione preferita.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top