20 Ekim 2015 Salı

Play Framework Job Kullanımı

Merhabalar,

Uygulamalarında play framework kullananlar için yararlı olacağını düşündüğüm bir konuya değinmek istedim. Job oluşturma.

Kısaca niçin job kullanırız, neden ihtiyaç duyarız ve nasıl kullanırız konularına gelecek olursak şöyle ki belirli bir zaman diliminde çalışmasını istediğiniz bir fonksiyonunuz var ya da daha gerçekçi bir örnek vermem gerekirse; günlük hava durumu verilerini bir web servisi ile çekip veritabanına kaydetmek veya bu verileri kullanarak bir sayfada grafik oluşturmak vs. istiyorsunuz. Bunun için fonksiyonu arayüzden tetiklemek (bir arayüz elemanı(buton vs.) ile fonksiyonun çalışmasını sağlamak) yerine sizin vereceğiniz bir zamanda gitsin web servisten verileri çeksin ve istediğim işlevleri yapsın diyorsanız tam da Job kullanma zamanıdır.


Peki Nasıl Kullanılır?

Play Framework içerisinde Job.java isminde bir class bulunmakta. Öncelikle fonksiyonunuzu tanımlayacağınız classı bu Job classından extends etmeniz gerekiyor.

Daha sonra Job.java içerisindeki doJob() metodunu override ediyoruz. Ve istediğiniz işlemleri bu fonksiyonun içerisinde yazabilirsiniz.

Class'ın başına da @On("0 0 18 * * ?") şöyle bir annotation vermeniz gerekiyor.

Burada @On yine play frameworkun On.java isimli bir interface'i.

@On içerisine yazdığımız parametre ise hangi zaman diliminde çalışacağını gösteriyor.

İlki-> saniye, ikincisi-> dakika, üçüncü-> saati göstermekte.

Sondakiler ise -> gün, ay, ve yılı gösteriyor.

* -> hepsi
? -> herhangi

anlamlarına gelmektedir.

Play framework'un kendi sitesinde ise şu şekilde anlatılmış -> bakınız.


Son Derece Sade ama Genel Yapı Hakkında Fikir Vermesi Açısından  İnceleyebilirsiniz :)

package jobs.havaDurumu;

import play.Play;
import play.jobs.Job;
import play.jobs.On;
import play.libs.WS;

@On("0 0 18 * * ?")
public class HavaDurumuJob extends Job {

    @Override    public void doJob() {

        /*buraya veriyi çekeceğiniz web servis url'ini yazıyorsunuz*/

        final String URL = "http://sinemakkoyun.com"; 

        String results = WS.url(URL).get().getString();

       /*verileriniz results'dadır. Bundan sonrasında results ile ne işlem yapmak isterseniz onları eklemelisiniz.*/
    
   }
}

Sevgiler.