Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/maikebing/silkierquartz

SilkierQuartz can host jobs using HostService and Provide a web management tools for Quartz !
https://github.com/maikebing/silkierquartz

cron datetime hostservice middleware nuget quartz quartzhostedservice quartzmin quartznet silkierquartz triggers

Last synced: 3 months ago
JSON representation

SilkierQuartz can host jobs using HostService and Provide a web management tools for Quartz !

Awesome Lists containing this project

README

        

[![NuGet](https://img.shields.io/nuget/v/SilkierQuartz.svg)](https://www.nuget.org/packages/SilkierQuartz)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
[![Build status](https://ci.appveyor.com/api/projects/status/0ojmooqvycks11kw?svg=true)](https://ci.appveyor.com/project/MaiKeBing/silkierquartz)
![.NET Core](https://github.com/maikebing/SilkierQuartz/workflows/.NET%20Core/badge.svg?branch=master)

SilkierQuartz is a new after merging [Quartzmin](https://github.com/jlucansky/Quartzmin) and [QuartzHostedService](https://github.com/mukmyash/QuartzHostedService)!

> [Quartz.NET](https://www.quartz-scheduler.net) is a full-featured, open source job scheduling system that can be used from smallest apps to large scale enterprise systems.

> [Quartzmin](https://github.com/jlucansky/Quartzmin) Quartzmin is powerful, easy to use web management tool for Quartz.NET

> [QuartzHostedService](https://github.com/mukmyash/QuartzHostedService) QuartzHostedService is easy to host Quartz as service in .Net Core !

So

SilkierQuartz can be used within your existing application with minimum effort as a Quartz.NET plugin when it automatically creates embedded web server.

![Demo](https://raw.githubusercontent.com/jlucansky/public-assets/master/Quartzmin/demo.gif)

The goal of this project is to provide convenient tool to utilize most of the functionality that Quartz.NET enables. The biggest challenge was to create a simple yet effective editor of job data map which is heart of Quartz.NET. Every job data map item is strongly typed and SilkierQuartz can be easily extended with a custom editor for your specific type beside standard supported types such as String, Integer, DateTime and so on.

SilkierQuartz was created with **Semantic UI** and **Handlebars.Net** as the template engine.

## SilkierQuartz's Features
- automatically discover IJob subclasses with SilkierQuartzAttribute
- With QuartzHostedService and more extensions
- Authentication feature , by [khanhna](https://github.com/khanhna)

## Quartzmin's Features
- Add, modify jobs and triggers
- Add, modify calendars (Annual, Cron, Daily, Holiday, Monthly, Weekly)
- Change trigger type to Cron, Simple, Calendar Interval or Daily Time Interval
- Set typed job data map values (bool, DateTime, int, float, long, double, decimal, string, byte[])
- Create custom type editor for complex type in job data map
- Manage scheduler state (standby, shutdown)
- Pause and resume job and trigger groups
- Pause and resume triggers individually
- Pause and resume all triggers for specific job
- Trigger specific job immediately
- Watch currently executing jobs
- Interrupt executing job
- See next scheduled dates for Cron
- See recent job history, state and error messages

## Install
SilkierQuartz is available on [nuget.org](https://www.nuget.org/packages/SilkierQuartz)

To install SilkierQuartz, run the following command in the Package Manager Console
```powershell
PM> Install-Package SilkierQuartz
```


### ASP.NET Core middleware
Add to your `Program.cs` file:

```csharp
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}

public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup();
})
.ConfigureSilkierQuartzHost();
}

```
Add to your `Startup.cs` file:
```csharp
public void ConfigureServices(IServiceCollection services)
{
services.AddSilkierQuartz();
}

public void Configure(IApplicationBuilder app)
{
/* Optional for authentication
app.UseAuthentication();
app.AddSilkierQuartzAuthentication();
app.UseAuthorization();
*/
app.UseSilkierQuartz(new SilkierQuartzOptions()
{
Scheduler = scheduler,
VirtualPathRoot = "/SilkierQuartz",
UseLocalTime = true,
DefaultDateFormat = "yyyy-MM-dd",
DefaultTimeFormat = "HH:mm:ss"
/* Optional for authentication
AccountName = "Your User Name",
AccountPassword = "Your User Password",
IsAuthenticationPersist = false
*/
});
}
```

## Notes
In clustered environment, it make more sense to host SilkierQuartz on single dedicated Quartz.NET node in standby mode and implement own `IExecutionHistoryStore` depending on database or ORM framework you typically incorporate. Every clustered Quarz.NET node should be configured with `ExecutionHistoryPlugin` and only dedicated node for management may have `SilkierQuartzPlugin`.

## License
This project is made available under the MIT license. See [LICENSE](LICENSE) for details.