Regelmäßige Stapelverarbeitung ist in Systemen üblich. Quartz ist eine bekannte Java-Scheduler-Bibliothek. quartz:http://www.quartz-scheduler.org/
Liferays Scheduler verwendet auch Quaryz.
Hier ist eine kurze Zusammenfassung, wie es in Liferay geht.
Quelle: http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html
Quelle: http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html
--aktivieren: Aktivierungsprozess des OSGi-Moduls --deactivate: OSGi-Modul beendet die Verarbeitung --receive: Geschäftslogik
TestBatch.java
package com.test.batch;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.messaging.DestinationNames;
import com.liferay.portal.kernel.messaging.Message;
import com.liferay.portal.kernel.messaging.MessageListener;
import com.liferay.portal.kernel.messaging.MessageListenerException;
import com.liferay.portal.kernel.scheduler.SchedulerEngineHelper;
import com.liferay.portal.kernel.scheduler.SchedulerEntryImpl;
import com.liferay.portal.kernel.scheduler.TimeUnit;
import com.liferay.portal.kernel.scheduler.Trigger;
import com.liferay.portal.kernel.scheduler.TriggerFactoryUtil;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Modified;
import org.osgi.service.component.annotations.Reference;
@Component(immediate = true, property = {
}, service =TestBatch.class)
public class TestBatch implements MessageListener {
private static Log _log = LogFactoryUtil.getLog(TestBatch.class);
//Stapelstartintervall
private static int INTERVAL_TIME = 15;
@Override
public void receive(Message message) throws MessageListenerException {
_log.info("Batch-Start");
// do something
_log.info("Chargenende");
}
@Activate
@Modified
protected void activate() {
String batchClassName = this.getClass().getName();
//Triggereinstellungen
Trigger trigger = TriggerFactoryUtil.createTrigger(batchClassName, batchClassName, INTERVAL_TIME, TimeUnit.MINUTE);
SchedulerEntryImpl schedulerEntryImpl = new SchedulerEntryImpl(batchClassName, trigger);
_schedulerEngineHelper.register(this, schedulerEntryImpl, DestinationNames.SCHEDULER_DISPATCH);
_log.info("Batch is activated.");
}
@Deactivate
protected void deactivate() {
_schedulerEngineHelper.unregister(this);
}
@Reference(unbind = "-")
private volatile SchedulerEngineHelper _schedulerEngineHelper;
}
Es wird in der TriggerFactoryUtil-Klasse bereitgestellt, sodass Sie es einfach erstellen können.
CronTrigger: http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html Referenzartikel: https://portal.liferay.dev/docs/7-1/tutorials/-/knowledge_base/t/message-listeners
das ist alles
Recommended Posts