Mysql
 sql >> база данни >  >> RDS >> Mysql

Задействане на Java програма въз основа на актуализации на база данни и интервал от време

Напишете една работа. Накарайте го да се изпълнява редовно.

На практика вие ще правите нещо от рода на:

SELECT count(*) FROM table WHERE new = 1;

(или каквото и да е)

Пускайте това всяка секунда, 5 секунди, 10 секунди, каквото изглежда разумно въз основа на вашата дейност.

Когато count ==N, стартирайте вашия процес. Когато "време от последното изпълнение" ==5 минути, стартирайте процеса.

Процесът е същият, просто го проверявате по-често с двата критерия.

Това предлага предимство, че няма да получите състояние на измамно състезание, при което заданието се задейства ДВА ПЪТИ (защото Задание A откри броя на вмъкванията, който случайно е бил 5 минути след изпълнението на последното задание). Редки, да, но състезателните условия винаги изглежда активно търсят „редки“ събития, които „никога не се случват“.

Що се отнася до планирането, crontab е лесен, защото не е нужно да поддържате процеса си, да го поддържате жив, да демонизирате и т.н. и т.н.

Ако вече работите в дълго работещ контейнер (сървър за приложения, tomcat и т.н.), тогава този проблем вече е решен и можете просто да го използвате.

Недостатъкът на cron е неговата детайлност, той работи най-много всяка минута. Ако това е твърде дълго, няма да работи за вас. Но ако е наред, тогава има истинска стойност в това да имате прост процес, който просто светва, проверява ли го и се затваря. Разбира се, ще трябва да запази състоянието си по някакъв начин (може да погледне в дневника на задачите, за да види кога е изпълнена последната задача, например).

В рамките на java има много опции:необработени нишки, заспиване, таймери, ScheduledExecutorService, нещо като Quartz, EJB Timer beans (ако работите с Java EE контейнер).

Но аз съм фен на KISS. Ако cron задача може да го направи, оставете го и го направете веднъж.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. utf8 кодиране в Perl и MySql

  2. htaccess redirect незавършена задача

  3. Проверка дали mysql_query върна нещо или не

  4. Doctrine Paginator избира цялата таблица (много бавно)?

  5. Как да задам набор от символи за MySQL в RODBC?