All Projects → fabioformosa → Quartz Manager

fabioformosa / Quartz Manager

Licence: apache-2.0
UI Manager for Quartz Scheduler. Scheduler console and job monitor (Rest API + angular frontend)

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Quartz Manager

Sundial
A Light-weight Job Scheduling Framework
Stars: ✭ 230 (+64.29%)
Mutual labels:  scheduled-jobs, quartz, trigger
Quartznet
Quartz Enterprise Scheduler .NET
Stars: ✭ 4,825 (+3346.43%)
Mutual labels:  scheduled-jobs, quartz
Shardingsphere Elasticjob
Distributed scheduled job framework
Stars: ✭ 7,369 (+5163.57%)
Mutual labels:  scheduled-jobs, quartz
Springboot Quartz
quartz + springboot + RabbitMQ + H2(in-memory database) + dynamic task management web console.
Stars: ✭ 103 (-26.43%)
Mutual labels:  quartz
Spring Quartz Demo
spring整合quartz动态定时任务demo
Stars: ✭ 105 (-25%)
Mutual labels:  quartz
Go Quartz
Simple, zero-dependency scheduling library for Go
Stars: ✭ 118 (-15.71%)
Mutual labels:  quartz
Hangfire.recurringjobextensions
Extensions for Hangfire to build RecurringJob automatically
Stars: ✭ 136 (-2.86%)
Mutual labels:  quartz
Cronscheduler.aspnetcore
Cron Scheduler for AspNetCore 2.x/3.x or DotNetCore 2.x/3.x Self-hosted
Stars: ✭ 100 (-28.57%)
Mutual labels:  scheduled-jobs
Ruoyi Oracle
(RuoYi)官方仓库 基于SpringBoot的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。直接运行即可用
Stars: ✭ 134 (-4.29%)
Mutual labels:  quartz
Zeusspring
基于Spring Boot 2.0的前后端分离的快速开发平台,此仓库是后台部分; 前台:Vue+Element 后台:Spring Boot 2.0/Spring Security/JWT/Spring Data JPA+Mybatis-Plus/Redis/分布式限流/同步锁/验证码/动态权限管理 数据权限 工作流 代码生成 日志记录 第三方社交账号、短信登录
Stars: ✭ 117 (-16.43%)
Mutual labels:  quartz
Milkomeda
Spring extend componets which build from experience of bussiness, let developers to develop with Spring Boot as fast as possible.(基于Spring生态打造的一系列来自业务上的快速开发模块集合。)
Stars: ✭ 117 (-16.43%)
Mutual labels:  quartz
Ruoyi Vue Fast
(RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统
Stars: ✭ 107 (-23.57%)
Mutual labels:  quartz
Sk Admin
基于 Spring Boot、 Spring Data JPA、 Spring Security、Vue 的前后端分离的管理系统。项目采用模块开发方式, 主要模块:权限管理 (RBAC(Role-Based Access Control,基于角色的访问控制),支持数据字典、数据权限管理、前端菜单支持动态路由)、日志管理、代码生成器、系统监控、云存储管理、系统工具等等
Stars: ✭ 130 (-7.14%)
Mutual labels:  quartz
Seppb
普兰能效平台开源版(后端)
Stars: ✭ 104 (-25.71%)
Mutual labels:  quartz
Keel
Kubernetes Operator to automate Helm, DaemonSet, StatefulSet & Deployment updates
Stars: ✭ 1,870 (+1235.71%)
Mutual labels:  trigger
Sidekiq Cron
Scheduler / Cron for Sidekiq jobs
Stars: ✭ 1,383 (+887.86%)
Mutual labels:  scheduled-jobs
Dropwizard Jobs
Scheduling / Quartz integration for Dropwizard
Stars: ✭ 132 (-5.71%)
Mutual labels:  trigger
Plsh
PL/sh is a procedural language handler for PostgreSQL that allows you to write stored procedures in a shell of your choice.
Stars: ✭ 111 (-20.71%)
Mutual labels:  trigger
Deck Chores
A job scheduler for Docker containers, configured via labels.
Stars: ✭ 110 (-21.43%)
Mutual labels:  scheduled-jobs
Ibase4j
Spring,SpringBoot 2.0,SpringMVC,Mybatis,mybatis-plus,motan/dubbo分布式,Redis缓存,Shiro权限管理,Spring-Session单点登录,Quartz分布式集群调度,Restful服务,QQ/微信登录,App token登录,微信/支付宝支付;日期转换、数据类型转换、序列化、汉字转拼音、身份证号码验证、数字转人民币、发送短信、发送邮件、加密解密、图片处理、excel导入导出、FTP/SFTP/fastDFS上传下载、二维码、XML读写、高精度计算、系统配置工具类等等。
Stars: ✭ 1,548 (+1005.71%)
Mutual labels:  quartz

Build Status Maven Central Gitter

QUARTZ MANAGER

Quartz Manager is a library you can import in your spring webapp to easily enable the Quartz Scheduler and to control it by REST APIs or by a UI Manager Panel (angular-based).

Your Spring Webapp should provide the java class of the job you want schedule. Importing the Quartz Manager your project will have the REST API and (optionally) the UI to launch and control the job.
The UI Dashboard is composed by a management panel to set the quartz trigger, to start/stop the scheduler and a log panel with a progress bar to display the job output.

HOW IT WORKS

  • Set up the trigger into the left sidebar in terms of: daily frequency and and max occurrences.
  • Press the start button
  • The GUI manager updates in real time the progress bar and reports all logs of your quartz job.

QUICK START

  • Requirements Java 8+

  • add the dependency

MAVEN

<dependency>
  <groupId>it.fabioformosa.quartz-manager</groupId>
  <artifactId>quartz-manager-starter-api</artifactId>
  <version>3.0.1</version>
</dependency>

<!-- OPTIONALLY -->
<dependency>
  <groupId>it.fabioformosa.quartz-manager</groupId>
  <artifactId>quartz-manager-starter-ui</artifactId>
  <version>3.0.1</version>
</dependency>

GRADLE

compile group: 'it.fabioformosa.quartz-manager', name: 'quartz-manager-starter-api', version: '3.0.1'

//optionally
compile group: 'it.fabioformosa.quartz-manager', name: 'quartz-manager-starter-ui', version: '3.0.1'

Import quartz-manager-starter-ui as well, if you want to use the Quartz Manager API by the angular frontend.

  • add a quartz.properties file in the classpath (src/main/resources)
org.quartz.scheduler.instanceName=example
org.quartz.scheduler.instanceId=AUTO
org.quartz.threadPool.threadCount=1

quartz.properties is a configuration file required by Quartz Scheduler. For further details, click here.

  • Create the job class that you want to schedule
public class SampleJob extends AbstractLoggingJob {

   @Override
   public LogRecord doIt(JobExecutionContext jobExecutionContext) {
       return new LogRecord(LogType.INFO, "Hello from QuartManagerDemo!");
   }

}

Extend the super-class AbstractLoggingJob

  • Enable quartz-manager adding into the application.yml
quartz:
  enabled: true

job: 
  frequency: 4000
  repeatCount: 19

quartz-manager:
  jobClass: <QUALIFIED NAME OF THE YOUR JOB CLASS>

(Change the port and the contextPath accordingly with the setup of your webapp)

(Change the port and the contextPath accordingly with the setup of your webapp)

  • Security If you want enable a security layer and allow the access to the REST API and to the UI only to authenticated users, add the dependency:

MAVEN

<dependency>
  <groupId>it.fabioformosa.quartz-manager</groupId>
  <artifactId>quartz-manager-starter-security</artifactId>
  <version>3.0.1</version>
</dependency>

GRADLE

compile group: 'it.fabioformosa.quartz-manager', name: 'quartz-manager-starter-security', version: '3.0.1'

and in your application.yml:

quartz-manager:
  security:
    login-model:
      form-login-enabled: true
      userpwd-filter-enabled : false
    jwt:
      enabled: true
      secret: "PLEASE_TYPE_HERE_A_SECRET"
      expiration-in-sec: 28800  # 8 hours
      header-strategy:
        enabled: false
        header: "Authorization"
      cookie-strategy:
        enabled: true
        cookie: AUTH-TOKEN
  accounts:
    in-memory:
      enabled: true
      users:
        - name: admin
          password: admin
          roles:
            - ADMIN      

  • DEMO

Take a loot to the project Quartz-Manager Demo, it is an example of how-to:

  • import the quartz-manager-api library in your webapp
  • include the quartz-manager frontend (angular based) through a webjar
  • set properties into the application.yml
  • add a secure layer to allow the API only to logged users
  • schedule a custom job (a dummy hello world)

ROADMAP

Open the Project Roadmap to take a look at the plan of Quartz Manager.

Next steps in the roadmap are:

  • to add a persistent layer to save all job setup.
  • to add a complete setup UI panel for quartz, in term of cronjobs and multiple jobs.
  • to add CI/CD pipeline to ease the deploy pulling a docker container.
  • Enabling adapters for integrations: kafka, etc.

HOW-TO CONTRIBUTE

PROJECT STRUCTURE

  • quartz-parent/quartz-manager-starter-api is the library that can be imported in webapp to have the quartz-manager API.
  • quartz-parent/quartz-manager-starter-ui is a maven module to build and package the angular frontend in a webjar.
  • quartz-parent/quartz-manager-starter-security is ther library that can be imported in a webapp to have a security layer (login) over the quartz-manager API.
  • quartz-parent/quartz-manager-web-showcase is an example of webapp that imports quartz-manager-api. Useful to develop the frontend started locally with the webpack dev server.
  • quartz-frontend is the angular app that interacts with the Quartz Manager API.

PROJECT DETAILS

[requirements] Make sure you have installed

To build&run quartz-manager in your machine:

#CLONE REPOSITORY
git clone https://github.com/fabioformosa/quartz-manager.git

# START QUARTZ-MANAGER-WEB
cd quartz-manager/quartz-parent
mvn install
cd quartz-manager/quartz-parent/quartz-manager-web-showcase
mvn spring-boot:run

# START QUARTZ-MANAGER-FRONTEND
cd quartz-manager/quartz-manager-frontend
npm install
npm start

  1. Open browser at http://localhost:4200
  2. Log in with default credentials: admin/admin

If you are not confident with maven CLI, you can start it by your IDE. For more details spring boot ref.

HOW TO RUN YOUR SCHEDULED JOB

By default, quartz-manager-web-showcase executes the dummy job that logs "hello world!". Replace the dummy job (class: it.fabioformosa.quartzmanager.jobs.SampleJob) with yours. Follow these steps:

  1. Extend the super class it.fabioformosa.quartzmanager.jobs.AbstractLoggingJob
  2. set property quartz-manager.jobClass with qualified name of your custom Job Class (default job is SampleJob.class)

HOW TO CHANGE SETTINGS

  • Num of Threads: /quartz-manager-parent/quartz-manager-web/src/main/resources/quartz.properties
  • Credentials: To change admin's password, set ENV var quartz-manager.account.pwd
  • quartz-manager backend context path (default /quartz-manager) and port (default 8080): /quartz-manager/src/main/resources/application.properties

HOW TO BROWSE REST API DOC

Swagger has been added as library. So, you can get REST API doc opening: http://localhost:8080/quartz-manager/swagger-ui.html

Tech Overview

Backend Stack Java 8, Spring Boot 2.1.4 (Spring MVC 5.1.6, Spring Security 5.1.5, Spring AOP 5.1.6), Quartz Scheduler 2.3.1

Application Server Tomcat (embedded)

Frontend Angular 9.1.4, Web-Socket (stompjs 2.3.3)

Style angular material, FontAwesome 5

From quartz manager ver 2.x.x, the new structure of project is:

  • REST API backend
  • Single Page Application frontend (angular 9)

(The previous version of quartz manager was a monolithic backend that provided also frontend developed with angularjs 1.6.x. You can find it at the branch 1.x.x)

Contributes

Every contribution is welcome. Open a issue, so we can discuss about new features and implement them.

Credits

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].