Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Memicu program Java berdasarkan pembaruan basis data dan interval waktu

Tulis satu pekerjaan. Lakukan secara teratur.

Secara efektif, Anda akan melakukan sesuatu seperti:

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

(atau apa pun)

Jalankan itu setiap detik, 5 detik, 10 detik, apa pun yang tampaknya masuk akal berdasarkan aktivitas Anda.

Saat count ==N, jalankan proses Anda. Ketika "waktu sejak terakhir dijalankan" ==5 menit, jalankan proses Anda.

Prosesnya sama, Anda hanya lebih sering memeriksanya dengan dua kriteria.

Ini menawarkan keuntungan bahwa Anda tidak akan mendapatkan kondisi balapan nakal di mana pekerjaan menyala DUA KALI (karena Pekerjaan A menemukan jumlah sisipan yang kebetulan 5 menit dari saat pekerjaan terakhir berjalan). Jarang, ya, tetapi kondisi balapan sepertinya selalu aktif mencari peristiwa "langka" yang "tidak pernah terjadi".

Sedangkan untuk penjadwalan, crontab mudah karena Anda tidak perlu mempertahankan proses Anda, tetap hidup, daemonisasi, dll dll.

Jika Anda sudah menjalankan dalam wadah yang berjalan lama (server aplikasi, kucing jantan, dll.) maka masalah itu sudah terpecahkan dan Anda bisa memanfaatkannya.

Kelemahan cron adalah granularitasnya, hanya berjalan paling banyak setiap menit. Jika itu terlalu lama, itu tidak akan berhasil untuk Anda. Tetapi jika tidak apa-apa, maka ada nilai nyata dalam memiliki proses sederhana yang hanya menyala, apakah itu memeriksa, dan berhenti. Tentu saja, itu harus mempertahankan statusnya entah bagaimana (misalnya, itu bisa melihat log pekerjaan untuk melihat kapan pekerjaan terakhir dijalankan).

Di dalam java, ada banyak opsi:raw thread, sleep, Timers, ScheduledExecutorService, sesuatu seperti Quartz, EJB Timer beans (jika Anda menjalankan container Java EE).

Tapi, saya penggemar KISS. Jika pekerjaan cron bisa melakukannya, biarkan, dan lakukan sekali.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Beberapa Tabel MySQL BERGABUNG perlu menggabungkan hasil 1 tabel menjadi satu kolom kolom

  2. PHP:Sementara loop tidak berfungsi setelah menyesuaikan SELECT untuk pencegahan injeksi SQL

  3. Jalankan file .sql dengan Python dengan MySQLdb

  4. Migrasi Data dan Skema dari MySQL ke SQL Server

  5. Pemrograman kelas PDO PHP:Kesalahan fatal:Panggilan ke fungsi anggota fetchAll() di boolean