Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Quartz job выполняется с задержкой / 1 сообщений из 1, страница 1 из 1
19.10.2013, 05:23:20
    #38433750
vgrinder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Quartz job выполняется с задержкой
Здравствуйте.

Имеется следующая конфигурация:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
<!-- Scheduler -->
	<bean id="commonSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<qualifier value="job-planner"/>
		<property name="autoStartup" value="false"/>
		<property name="dataSource" ref="scheduleDataSource"/>
		<property name="jobFactory">
			<bean class="org.springframework.scheduling.quartz.SpringBeanJobFactory"/>
		</property>
		<property name="overwriteExistingJobs" value="false"/>
		<property name="applicationContextSchedulerContextKey" value="applicationContext"/>
		<property name="transactionManager" ref="scheduleTxManager"/>
		<property name="quartzProperties">
			<props>
				<prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop>
				<prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.StdJDBCDelegate</prop>
				<prop key="org.quartz.jobStore.isClustered">false</prop>
				<prop key="org.quartz.jobStore.misfireThreshold">180000</prop>
				<prop key="org.quartz.jobStore.clusterCheckinInterval">90000</prop>
				<prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
				<prop key="org.quartz.threadPool.threadCount">1</prop>
				<prop key="org.quartz.scheduler.skipUpdateCheck">true</prop>
			</props>
		</property>
	</bean>

	<bean name="mailingJob" class="org.springframework.scheduling.quartz.JobDetailBean" autowire="constructor">
		<property name="jobClass" value="com.test.MyJob"/>
		<property name="jobDataAsMap">
			<map>
				<entry key="mailTask" value-ref="mailTask" />
			</map>
		</property>
		<property name="name" value="Mail"/>
		<property name="group" value="EventMailing"/>
		<property name="requestsRecovery" value="true"/>
		<property name="durability" value="true"/>
	</bean>

<!-- Executor -->
	<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<qualifier value="job-executor"/>
		<property name="jobDetails">
			<array>
				<ref bean="mailingJob" />
			</array>
		</property>
		<property name="dataSource" ref="scheduleDataSource"/>
		<property name="jobFactory">
			<bean class="org.springframework.scheduling.quartz.SpringBeanJobFactory"/>
		</property>
		<property name="overwritemoExistingJobs" value="false"/>
		<property name="applicationContextSchedulerContextKey" value="applicationContext"/>
		<property name="quartzProperties">
			<props>
				<prop key="org.quartz.scheduler.idleWaitTime">180000</prop>
				<prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop>
				<prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.StdJDBCDelegate</prop>
				<prop key="org.quartz.jobStore.isClustered">false</prop>
				<prop key="org.quartz.jobStore.misfireThreshold">180000</prop>
				<prop key="org.quartz.jobStore.clusterCheckinInterval">90000</prop>

				<prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
				<prop key="org.quartz.threadPool.threadCount">5</prop>
				<prop key="org.quartz.scheduler.skipUpdateCheck">true</prop>
			</props>
		</property>
	</bean>



В Scheduler-e есть метод:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        @Transactional
	public void triggerMailSend(String recipient, String report) {
		try {
			JobDataMap jobDataMap = new JobDataMap();
			jobDataMap.put("recipient", recipient);
			jobDataMap.put("details", report);
			commonSchedulerFactoryBean.getObject().triggerJob("Mail", "EventMailing", jobDataMap);
		} catch (SchedulerException e) {
			throw new RuntimeException(e);
		}
	}



При вызове этого метода в таблице QRTZ_TRIGGERS появляется запись с одинаковыми NEXT_FIRE_TIME и START_TIME, и статусом WAITING.
Обрабатывается она за время от 40 сек до 2 минут приблизительно.

Подскажите, что именно влияет на время обработки. (какие параметры, условия и т.д.). И как можно добится немедленного выполнения job-а?

Спасибо.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Quartz job выполняется с задержкой / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]