[JAVA] Erstellen eines Liferay-Stapels

Einführung

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.

Quarz-Cron-Konfigurationsformat

image.png

Quelle: http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html

Konfigurationsbeispiel für Quarz-Cron

image.png

Quelle: http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html

Für die Liferay-Batch-Implementierung sind Methoden erforderlich

--aktivieren: Aktivierungsprozess des OSGi-Moduls --deactivate: OSGi-Modul beendet die Verarbeitung --receive: Geschäftslogik

Stichprobe

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;

}

Erstellen eines Schlüsselauslösers

image.png 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

Erstellen eines Liferay-Stapels
Rails Grundlagen zum Erstellen einer neuen Anwendung
Erstellen eines lokalen Repositorys
Testfall erstellen
Erstellen eines benutzerdefinierten Scala ExecutionContext
Erstellen eines Kalenders mit Ruby
[Rails] Erstellen eines Suchfelds
Erklärung von Ruby on Rails für Anfänger ③ ~ Erstellen einer Datenbank ~
Eine kurze Erklärung von commitAllowingStateLoss
Dummy Factory, ein Tool zur Erstellung großer Datenstapel für Liferay 7 / DXP
Erstellen eines gemischten bedingten Ausdrucks von Rails if-Anweisung und sofern nicht
Denken Sie an eine Java-Update-Strategie
Eine Liste der rawValues für UITextContentType.
Erstellen einer Timer-App mit Schlamm
Liste der Java-Objekte sortieren
Führen Sie eine Batchdatei von Java aus
Ein Memorandum über das FizzBuzz-Problem
Eine kurze Beschreibung der JAVA-Abhängigkeiten
Docker [Batch-Löschung von <none> -Tags]
Geschichte einer bestimmten internen SE
Verstehe die Lambda-Formel ein wenig
Die Geschichte der Schaffung eines Dienstes, der die Geschichte des Portfolios erzählt, indem er sich allein entwickelt