All Projects → michaelklishin → Quartz Mongodb

michaelklishin / Quartz Mongodb

Licence: other
A MongoDB-based store for the Quartz scheduler. This fork strives to be as feature complete as possible. Originally by MuleSoft.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Quartz Mongodb

Spring Boot Leaning
Spring Boot 2.X 最全课程代码
Stars: ✭ 2,008 (+851.66%)
Mutual labels:  mongodb, quartz
Nobibi
一款基于Next.js+mongo的轻量级开源社区(open community by Next.js & mongo)
Stars: ✭ 209 (-0.95%)
Mutual labels:  mongodb
Saas
Build your own SaaS business with SaaS boilerplate. Productive stack: React, Material-UI, Next, MobX, WebSockets, Express, Node, Mongoose, MongoDB. Written with TypeScript.
Stars: ✭ 2,720 (+1189.1%)
Mutual labels:  mongodb
Migrate
Database migrations. CLI and Golang library.
Stars: ✭ 2,315 (+997.16%)
Mutual labels:  mongodb
Mongo Perl Driver
Perl driver for the MongoDB
Stars: ✭ 203 (-3.79%)
Mutual labels:  mongodb
Mgodatagen
Generate random data for MongoDB
Stars: ✭ 206 (-2.37%)
Mutual labels:  mongodb
Vue Mall Mobile
🔥 vue + koa + mongodb 搭建 mobile web 商城 (End。。。)
Stars: ✭ 201 (-4.74%)
Mutual labels:  mongodb
Mern Boilerplate
MERN stack project boilerplate
Stars: ✭ 211 (+0%)
Mutual labels:  mongodb
Blackbelt Aks Hackfest
Microsoft Intelligent Cloud Blackbelt Team :: Hackfest Repo
Stars: ✭ 209 (-0.95%)
Mutual labels:  mongodb
Thal
Getting started with Puppeteer and Chrome Headless for Web Scraping
Stars: ✭ 2,345 (+1011.37%)
Mutual labels:  mongodb
Mongoke
Instant Graphql for MongoDb (active branch is golang, rewrite in process)
Stars: ✭ 203 (-3.79%)
Mutual labels:  mongodb
Hivemq Mqtt Tensorflow Kafka Realtime Iot Machine Learning Training Inference
Real Time Big Data / IoT Machine Learning (Model Training and Inference) with HiveMQ (MQTT), TensorFlow IO and Apache Kafka - no additional data store like S3, HDFS or Spark required
Stars: ✭ 204 (-3.32%)
Mutual labels:  mongodb
Express React Redux Starter
Starter for Express, React, Redux, SCSS applications
Stars: ✭ 207 (-1.9%)
Mutual labels:  mongodb
Nodejs
Node.js基础与应用教程,适合初学者入门,以及有一定经验的开发者提高。Node.js全栈交流QQ群:423652352,node.js或者全栈开发培训QQ群:579500717
Stars: ✭ 202 (-4.27%)
Mutual labels:  mongodb
Inversify Express Example
The official express + inversify+ inversify-express-utils examples
Stars: ✭ 210 (-0.47%)
Mutual labels:  mongodb
Angular2 Express Mongoose Gulp Node Typescript
AngularJS 2 (Updated to 4.2.0) Mean Stack application which uses Angular2, Gulp, Express, Node, MongoDB (Mongoose) with Repository Pattern Business Layer
Stars: ✭ 201 (-4.74%)
Mutual labels:  mongodb
Cronexpbuilder
Quartz 的Cron任务调度表达式一般人很难理解,在Googole上查询也没有发现类似的代码,所以开发了一个对Quartz Cron 表达式的可视化双向解析和生成的一个java的GUI程序,供使用Quartz的程序员参考和使用.
Stars: ✭ 204 (-3.32%)
Mutual labels:  quartz
Mongodb.entities
A data access library for MongoDB with an elegant api, LINQ support and built-in entity relationship management
Stars: ✭ 204 (-3.32%)
Mutual labels:  mongodb
Socialite
Social Data Reference Architecture - This Repository is NOT a supported MongoDB product
Stars: ✭ 210 (-0.47%)
Mutual labels:  mongodb
Aspnetcore.identity.mongodb
MongoDB Data Store Adaptor for ASP.NET Core Identity
Stars: ✭ 210 (-0.47%)
Mutual labels:  mongodb

A MongoDB-based store for Quartz.

This is a MongoDB-backed job store for the Quartz scheduler.

Maven Artifacts

Artifacts are released to Bintray.

If you are using Maven, add the following repository definition to your pom.xml:

<repositories>
    <repository>
        <id>michaelklishin</id>
        <url>https://dl.bintray.com/michaelklishin/maven/</url>
    </repository>
</repositories>

With Gradle, add the following to your build.gradle:

repositories {
    maven {
        url "https://dl.bintray.com/michaelklishin/maven/"
    }
}

The Most Recent Release

With Maven:

<dependency>
    <groupId>com.novemberain</groupId>
    <artifactId>quartz-mongodb</artifactId>
    <version>2.2.0-rc2</version>
</dependency>

With Gradle:

compile "com.novemberain:quartz-mongodb:2.2.0-rc2"

Usage

Like most things in Quartz, this job store is configured via a property file, quartz.properties:

# Use the MongoDB store
org.quartz.jobStore.class=com.novemberain.quartz.mongodb.MongoDBJobStore
# MongoDB URI (optional if 'org.quartz.jobStore.addresses' is set)
org.quartz.jobStore.mongoUri=mongodb://localhost:27020
# comma separated list of mongodb hosts/replica set seeds (optional if 'org.quartz.jobStore.mongoUri' is set)
org.quartz.jobStore.addresses=host1,host2
# database name
org.quartz.jobStore.dbName=quartz
# Will be used to create collections like mycol_jobs, mycol_triggers, mycol_calendars, mycol_locks
org.quartz.jobStore.collectionPrefix=mycol
# thread count setting is ignored by the MongoDB store but Quartz requries it
org.quartz.threadPool.threadCount=1

Error Handling in Clustered Mode

When running in clustered mode, the store will periodically check in with the cluster. Should that operation fail, the store needs to decide what to do:

  • Shut down
  • Do nothing and optimistically proceed

Different strategies make sense in different scenarios. Pausing Quartz would be optimal but this job store currently doesn't have that option.

The org.quartz.jobStore.checkInErrorHandler.class property controls the error handler implementation.

To shut down the JVM (which is the default), add the following key to quartz.properties

org.quartz.jobStore.checkInErrorHandler.class=com.novemberain.quartz.mongodb.cluster.KamikazeErrorHandler

to ignore the failure:

org.quartz.jobStore.checkInErrorHandler.class=com.novemberain.quartz.mongodb.cluster.NoOpErrorHandler

Clojure and Quartzite

If you use Quartzite or want your job classes to be available to Clojure code, use:

org.quartz.jobStore.class=com.novemberain.quartz.mongodb.DynamicMongoDBJobStore

(this assumes Clojure jar is on classpath).

Job Data storage

By default you are allowed to pass any java.io.Serializable objects inside JobDataMap. It will be serialized and stored as a base64 string.

If your JobDataMap only contains simple types, it may be stored directly inside MongoDB to save some performance.

org.quartz.jobStore.jobDataAsBase64=false

Clustering

To enable clustering set the following property:

# turn clustering on:
org.quartz.jobStore.isClustered=true

# Must be unique for each node or AUTO to use autogenerated:
org.quartz.scheduler.instanceId=AUTO
# org.quartz.scheduler.instanceId=node1

# The same cluster name on each node:
org.quartz.scheduler.instanceName=clusterName

Each node in a cluster must have the same properties, except instanceId. To setup other clusters use different collection prefix:

org.quartz.scheduler.collectionPrefix=yourCluster

Different time settings for cluster operations:

# Frequency (in milliseconds) at which this instance checks-in to cluster.
# Affects the rate of detecting failed instances.
# Defaults to 7500 ms.
org.quartz.jobStore.clusterCheckinInterval=10000

# Time in millis after which a trigger can be considered as expired.
# Defaults to 10 minutes:
org.quartz.jobStore.triggerTimeoutMillis=1200000

# Time in millis after which a job can be considered as expired.
# Defaults to 10 minutes:
org.quartz.jobStore.jobTimeoutMillis=1200000

# Time limit in millis after which a trigger should be treated as misfired.
# Defaults to 5000 ms.
org.quartz.jobStore.misfireThreshold=10000

# WriteConcern timeout in millis when writing in Replica Set.
# Defaults to 5000 ms.
org.quartz.jobStore.mongoOptionWriteConcernTimeoutMillis=10000

Continuous Integration

Build Status

CI is hosted by Travis CI

Copyright & License

(c) Michael S. Klishin, Alex Petrov, 2011-2020.

Apache Public License 2.0

FAQ

Project Origins

The project was originally started by MuleSoft. It supports all Quartz trigger types and tries to be as feature complete as possible.

Why the Fork?

MuleSoft developers did not respond to attempts to submit pull requests for several months. As more and more functionality was added and implementation code refactored, I decided to completely separate this fork form GitHub forks network because the project is now too different from the original one. All changes were made with respect to the Apache Public License 2.0.

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].