use of com.dtstack.taier.common.queue.comparator.JobClientComparator in project Taier by DTStack.
the class GroupPriorityQueueTest method testPriorityQueueJob.
@Test
public void testPriorityQueueJob() {
PriorityBlockingQueue<JobClient> queue = new PriorityBlockingQueue<JobClient>(10, new JobClientComparator());
JobClient job3 = new JobClient();
job3.setPriority(3);
JobClient job4 = new JobClient();
job4.setPriority(4);
JobClient job1 = new JobClient();
job1.setPriority(1);
JobClient job2 = new JobClient();
job2.setPriority(2);
JobClient job5 = new JobClient();
job5.setPriority(5);
queue.put(job1);
queue.put(job2);
queue.put(job3);
queue.put(job4);
queue.put(job5);
JobClient jjj = queue.poll();
Assert.assertEquals(jjj.getPriority(), job1.getPriority());
}
use of com.dtstack.taier.common.queue.comparator.JobClientComparator in project Taier by DTStack.
the class GroupPriorityQueue method build.
/**
* 每个GroupPriorityQueue中增加独立线程,以定时调度方式从数据库中获取任务。(数据库查询以id和优先级为条件)
*/
public GroupPriorityQueue build() {
this.environmentContext = applicationContext.getBean(EnvironmentContext.class);
this.engineJobCacheService = applicationContext.getBean(EngineJobCacheService.class);
this.jobPartitioner = applicationContext.getBean(JobPartitioner.class);
this.workerOperator = applicationContext.getBean(WorkerOperator.class);
this.queueSizeLimited = environmentContext.getQueueSize();
checkParams();
this.queue = new PriorityBlockingQueue<>(queueSizeLimited * 2, new JobClientComparator());
this.jobSubmitDealer = new JobSubmitDealer(environmentContext.getLocalAddress(), this, applicationContext);
ScheduledExecutorService scheduledService = new ScheduledThreadPoolExecutor(1, new CustomThreadFactory(this.getClass().getSimpleName() + "_" + jobResource + "_AcquireJob"));
scheduledService.scheduleWithFixedDelay(new AcquireGroupQueueJob(), WAIT_INTERVAL * 10L, WAIT_INTERVAL, TimeUnit.MILLISECONDS);
ExecutorService jobSubmitService = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(), new CustomThreadFactory(this.getClass().getSimpleName() + "_" + jobResource + "_JobSubmit"));
jobSubmitService.submit(jobSubmitDealer);
return this;
}
Aggregations