Search in sources :

Example 1 with JobClientComparator

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());
}
Also used : JobClientComparator(com.dtstack.taier.common.queue.comparator.JobClientComparator) JobClient(com.dtstack.taier.pluginapi.JobClient) PriorityBlockingQueue(java.util.concurrent.PriorityBlockingQueue) Test(org.junit.Test)

Example 2 with JobClientComparator

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;
}
Also used : JobClientComparator(com.dtstack.taier.common.queue.comparator.JobClientComparator) JobPartitioner(com.dtstack.taier.scheduler.server.JobPartitioner) EnvironmentContext(com.dtstack.taier.common.env.EnvironmentContext) CustomThreadFactory(com.dtstack.taier.pluginapi.CustomThreadFactory) EngineJobCacheService(com.dtstack.taier.scheduler.service.EngineJobCacheService) WorkerOperator(com.dtstack.taier.scheduler.WorkerOperator) JobSubmitDealer(com.dtstack.taier.scheduler.jobdealer.JobSubmitDealer)

Aggregations

JobClientComparator (com.dtstack.taier.common.queue.comparator.JobClientComparator)2 EnvironmentContext (com.dtstack.taier.common.env.EnvironmentContext)1 CustomThreadFactory (com.dtstack.taier.pluginapi.CustomThreadFactory)1 JobClient (com.dtstack.taier.pluginapi.JobClient)1 WorkerOperator (com.dtstack.taier.scheduler.WorkerOperator)1 JobSubmitDealer (com.dtstack.taier.scheduler.jobdealer.JobSubmitDealer)1 JobPartitioner (com.dtstack.taier.scheduler.server.JobPartitioner)1 EngineJobCacheService (com.dtstack.taier.scheduler.service.EngineJobCacheService)1 PriorityBlockingQueue (java.util.concurrent.PriorityBlockingQueue)1 Test (org.junit.Test)1