Sometimes we need to run more than one scheduler (multiple scheduler) in our liferay portlet.
Below are the steps of how we can achieve this.
Steps
Step 1:
Create one liferay project of portlet plugin type, in our example project name is Scheduler, (suffix portlet will automatically added after project name) so after creation project complete name will be Scheduler-portlet
Step 2: Create two new java class FirstScheduler.java and SecondScheduler.java inside docroot/web-inf/src/com/test
Step 3: Paste below code in FirstScheduler.java
package com.test;
import com.liferay.portal.kernel.messaging.Message;
import com.liferay.portal.kernel.messaging.MessageListener;
import com.liferay.portal.kernel.messaging.MessageListenerException;
public class FirstScheduler implements MessageListener {
public void receive(Message arg0) throws MessageListenerException {
System.out.println("First scheduler is running ...");
}
}
Step 4: Paste below code in SecondScheduler.java
package com.test;
import com.liferay.portal.kernel.messaging.Message;
import com.liferay.portal.kernel.messaging.MessageListener;
import com.liferay.portal.kernel.messaging.MessageListenerException;
public class SecondScheduler implements MessageListener {
public void receive(Message arg0) throws MessageListenerException {
System.out.println("Second scheduler is running ...");
}
}
Step 5: Paste below code in liferay-portlet.xml for defining scheduler entry for two scheduler.
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_2_0.dtd">
<liferay-portlet-app>
<portlet>
<portlet-name>schedule</portlet-name>
<icon>/icon.png</icon>
<scheduler-entry>
<scheduler-description>FirstScheduler</scheduler-description>
<scheduler-event-listener-class>com.test.FirstScheduler</scheduler-event-listener-class>
<trigger>
<simple>
<simple-trigger-value>1</simple-trigger-value>
<time-unit>minute</time-unit>
</simple>
</trigger>
</scheduler-entry>
<scheduler-entry>
<scheduler-description>SecondScheduler</scheduler-description>
<scheduler-event-listener-class>com.test.SecondScheduler</scheduler-event-listener-class>
<trigger>
<simple>
<simple-trigger-value>2</simple-trigger-value>
<time-unit>minute</time-unit>
</simple>
</trigger>
</scheduler-entry>
<header-portlet-css>/css/main.css</header-portlet-css>
<footer-portlet-javascript>
/js/main.js
</footer-portlet-javascript>
<css-class-wrapper>schedule-portlet</css-class-wrapper>
</portlet>
<role-mapper>
<role-name>administrator</role-name>
<role-link>Administrator</role-link>
</role-mapper>
<role-mapper>
<role-name>guest</role-name>
<role-link>Guest</role-link>
</role-mapper>
<role-mapper>
<role-name>power-user</role-name>
<role-link>Power User</role-link>
</role-mapper>
<role-mapper>
<role-name>user</role-name>
<role-link>User</role-link>
</role-mapper>
</liferay-portlet-app>
Step 6 : Paste below code in portlet view.jsp
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<portlet:defineObjects />
<p style="border:1px solid green;">Multiple Scheduler in Liferay</p>
<p>Multiple Scheduler, Two scheduler will trigger, First Scheduler will trigger on every 1 min interval
and Second Scheduler will trigger on every 2 min interval.
</p>
Output:
Below are the steps of how we can achieve this.
Steps
Step 1:
Create one liferay project of portlet plugin type, in our example project name is Scheduler, (suffix portlet will automatically added after project name) so after creation project complete name will be Scheduler-portlet
Step 2: Create two new java class FirstScheduler.java and SecondScheduler.java inside docroot/web-inf/src/com/test
Step 3: Paste below code in FirstScheduler.java
package com.test;
import com.liferay.portal.kernel.messaging.Message;
import com.liferay.portal.kernel.messaging.MessageListener;
import com.liferay.portal.kernel.messaging.MessageListenerException;
public class FirstScheduler implements MessageListener {
public void receive(Message arg0) throws MessageListenerException {
System.out.println("First scheduler is running ...");
}
}
Step 4: Paste below code in SecondScheduler.java
package com.test;
import com.liferay.portal.kernel.messaging.Message;
import com.liferay.portal.kernel.messaging.MessageListener;
import com.liferay.portal.kernel.messaging.MessageListenerException;
public class SecondScheduler implements MessageListener {
public void receive(Message arg0) throws MessageListenerException {
System.out.println("Second scheduler is running ...");
}
}
Step 5: Paste below code in liferay-portlet.xml for defining scheduler entry for two scheduler.
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_2_0.dtd">
<liferay-portlet-app>
<portlet>
<portlet-name>schedule</portlet-name>
<icon>/icon.png</icon>
<scheduler-entry>
<scheduler-description>FirstScheduler</scheduler-description>
<scheduler-event-listener-class>com.test.FirstScheduler</scheduler-event-listener-class>
<trigger>
<simple>
<simple-trigger-value>1</simple-trigger-value>
<time-unit>minute</time-unit>
</simple>
</trigger>
</scheduler-entry>
<scheduler-entry>
<scheduler-description>SecondScheduler</scheduler-description>
<scheduler-event-listener-class>com.test.SecondScheduler</scheduler-event-listener-class>
<trigger>
<simple>
<simple-trigger-value>2</simple-trigger-value>
<time-unit>minute</time-unit>
</simple>
</trigger>
</scheduler-entry>
<header-portlet-css>/css/main.css</header-portlet-css>
<footer-portlet-javascript>
/js/main.js
</footer-portlet-javascript>
<css-class-wrapper>schedule-portlet</css-class-wrapper>
</portlet>
<role-mapper>
<role-name>administrator</role-name>
<role-link>Administrator</role-link>
</role-mapper>
<role-mapper>
<role-name>guest</role-name>
<role-link>Guest</role-link>
</role-mapper>
<role-mapper>
<role-name>power-user</role-name>
<role-link>Power User</role-link>
</role-mapper>
<role-mapper>
<role-name>user</role-name>
<role-link>User</role-link>
</role-mapper>
</liferay-portlet-app>
Step 6 : Paste below code in portlet view.jsp
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<portlet:defineObjects />
<p style="border:1px solid green;">Multiple Scheduler in Liferay</p>
<p>Multiple Scheduler, Two scheduler will trigger, First Scheduler will trigger on every 1 min interval
and Second Scheduler will trigger on every 2 min interval.
</p>
Output:
0 comments:
Post a Comment