推荐一个轻量级的任务调度开源项目。

01 项目简介

Coravel是一个.NET开源任务调度库,只需简单代码、几乎零配置就可以实现多种功能柜,如任务调度、队列、缓存、事件广播和邮件发送等。该项目特点就是让这些通常复杂的功能变得易于访问和使用,同时提供简洁、直观的语法。

02 核心功能

1、任务/作业调度:通过其流畅的代码内语法,让你能够轻松地在应用程序中设置和管理这些任务。

2、队列:提供了一个开箱即用的队列系统,它使用内存作为后端来异步处理任务,从而不会阻塞用户的 HTTP 请求,改善了应用的性能和用户体验。

3、缓存:为了提高应用程序的响应速度,Coravel 提供了一个简单易用的缓存 API。默认情况下,它使用内存缓存,但也支持数据库驱动(SQL Server、PostgreSQL),也可以自定义扩展缓存接口,以适应更复杂的缓存需求。

4、事件广播:可以构建松耦合的应用程序组件,这有助于提高应用程序的可维护性和灵活性。

5、邮件发送:简化了邮件发送过程,提供了内置的电子邮件友好的 Razor 模板、简单灵活的邮件 API,并且支持渲染电子邮件以进行视觉测试。此外,它还支持 SMTP、本地日志文件或自定义邮件器驱动程序。

03 使用示例

1、安装依赖库

dotnet tool install --global coravel-cli

2、任务调度

//启用
services.AddScheduler(); var provider = app.ApplicationServices;
provider.UseScheduler(scheduler =>
{
scheduler.Schedule(
() => Console.WriteLine("工作日每一分钟执行一次。")
)
.EveryMinute()
.Weekday();
});

3、队列

IQueue _queue;

public HomeController(IQueue queue) {
this._queue = queue;
} //使用队列
this._queue.QueueAsyncTask(async() => {
await Task.Delay(1000);
Console.WriteLine("这是队列!");
});

4、广播

var provider = app.ApplicationServices;
IEventRegistration registration = provider.ConfigureEvents(); //注册和监听
registration
.Register<BlogPostCreated>()
.Subscribe<TweetNewPost>()
.Subscribe<NotifyEmailSubscribersOfNewPost>();

5、发送邮件

using Coravel.Mailer.Mail;
using App.Models; namespace App.Mailables
{
public class NewUserViewMailable : Mailable<UserModel>
{
private UserModel _user; public NewUserViewMailable(UserModel user) => this._user = user; public override void Build()
{
this.To(this._user)
.From("from@test.com")
.View("~/Views/Mail/NewUser.cshtml", this._user);
}
}
}

04 项目地址

https://github.com/jamesmh/coravel

更多开源项目: https://github.com/bianchenglequ/NetCodeTop

- End -

推荐阅读

推荐一个C#轻量级矢量图形库

.NET日志库:Serilog、NLog、Log4Net等十大开源日志库大盘点!

推荐5个.Net版本 Redis 客户端开源库

ImageSharp:高性能跨平台.NET开源图形库

盘点3个.Net热门HTTP开源库

Coravel:一个可轻松实现任务调度、队列、邮件发送的开源项目的更多相关文章

  1. 瓣呀,一个基于豆瓣api仿网易云音乐的开源项目

    整体采用material design 风格,本人是网易云音乐的粉丝,所以界面模仿了网页云音乐,另外,项目中尽量使用了5.0之后的新控件. 项目整体采用mvp+rxjava+retrofit 框架,使 ...

  2. 一个遵循CleanArchitecture原则的Asp.net core轻量级开源项目

    这是一个基于最新的ASP.net core 5.0创建Razor Page应用程序解决方案模板.遵循Clean Architecture的原则,以最求简洁的代码风格和实现快速开发小型的web业务系统的 ...

  3. Log4j的邮件发送类SMTPAppender改造

    在开发过程中,我们有时需要将重要的错误日志通过邮件发送给相关的责任人,这样能即时发现错误,即时解决.如使用Log4J,一般会做如下配置: log4j.rootLogger = debug,mail # ...

  4. python学习笔记(SMTP邮件发送:带附件)

    博主有段时间没有更新博客了 先整理一个之前整理过的SMTP邮件发送,这次是带附件的功能 #!/usr/bin/env python # -*- coding: utf_8 -*- from email ...

  5. Spring Boot实战系列-----------邮件发送

    快速导航 添加Maven依赖 配置文件增加邮箱相关配置 Service.Test项目代码构建 五种邮件发送类型讲解 文本邮件 html邮件 附件邮件 html内嵌图片邮件 模板邮件 问题汇总 添加ma ...

  6. javaMail 邮件发送和接收示例,支持正文图片、html、附件(转)

    转自:https://blog.csdn.net/star_fly4/article/details/52037587 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文 ...

  7. Spring Boot 邮件发送的 5 种姿势!

    邮件发送其实是一个非常常见的需求,用户注册,找回密码等地方,都会用到,使用 JavaSE 代码发送邮件,步骤还是挺繁琐的,Spring Boot 中对于邮件发送,提供了相关的自动化配置类,使得邮件发送 ...

  8. 你有没有觉得邮件发送人固定配置在yml文件中是不妥当的呢?SpringBoot 动态设置邮件发送人

    明月当天,不知道你有没有思念的人 前言 之前其实已经写过SpringBoot异步发送邮件,但是今天在一个小项目中要用到发送邮件时,我突然觉得邮件发送人只有一个,并且固定写在yml文件中,就是非常的不妥 ...

  9. python实现监控URL的一个值小于规定的值--邮件报警

    监控URL的一个值小于规定的值--邮件报警 #!/usr/bin/env python #-*- coding:utf-8 -*- __author__ = 'liudong' import urll ...

  10. 实现一个线程安全的Queue队列

    使用装饰者模式实现一个线程安全的Queue队列. public class SynchronizedQueue<E> implements Queue<E>, Serializ ...

随机推荐

  1. 推荐一款专为Nginx设计的图形化管理工具: Nginx UI!

    Nginx UI是一款专为Nginx设计的图形化管理工具,旨在简化Nginx的配置与管理过程,提高开发者和系统管理员的工作效率. 项目地址:https://github.com/0xJacky/ngi ...

  2. 【2024】所有人都能看懂的 Win 11 安装/重装教程,跟着我一遍包成功

    无论你因为系统坏掉想重装一下 Windows,或者只是想升级一下 Windows 都可以.虽然标题写的是 Win 11,不过实际上对于任何 Windows 系统都适用,不过现在 Win 11 已经相当 ...

  3. RAC环境中某数据文件(非system表空间)创建在本地,不停机迁移到ASM磁盘中

    Datafiles are mistakenly built into the local file system for processing in the RAC environment The ...

  4. Machine Learning Week_4 Neural Networks: Representation

    目录 0 Neural Networks: Representation 1 Motivations 1.1 Non-linear Hypotheses 1.2 Neurons and the Bra ...

  5. 噢!JavaScript (2):对数组要小心使用delete

    最近在重写我自己的静态博客生成器,虽然遇到的小问题挺多,但今早这个问题令我印象深刻. 发现问题 博客的文章基础数据储存在main.json中,其中专门有数组dateindex来储存经过排列后的文章顺序 ...

  6. Linux中vim快捷键+vim报错解决

    vim快捷键+vim报错解决 vim 快捷键 编辑器 ​ yum -y install vim ​ 快捷键: 视图模式: 0 Home ^ 快速移动光标到行首 $ End 快速移动光标到行尾 u 撤销 ...

  7. 缓存之ehcache 之使用

    1. EHCache 的特点,是一个纯Java ,过程中(也可以理解成插入式)缓存实现,单独安装Ehcache ,需把ehcache-X.X.jar 和相关类库方到classpath中.如项目已安装了 ...

  8. MySQL之配置my.cnf

    1)可以实现直接使用mysql登录MySQL,需要添加配置文件, 进行客户端配置即可 ~/.my.cnf [client] port = 3306 socket = /var/lib/mysql/my ...

  9. Net中RabbitMq.Client7.0通过依赖注入DI来管理RabbitMQ客户端的生命周期

    在 RabbitMQ.Client 7.0.0 版本中, IModel 在 RabbitMQ.Client 7.0.0-alpha2 版本中已经被重命名,现在应该使用 IChannel 替代 IMod ...

  10. C# 和 SQL Server中 PadLeft和PadRight 的用法

    C# 中 PadLeft和PadRight 的用法 需求:需要一个字符串实现自增.是根据数据库中一个自增的int类型的值,实现自增的.但是要加上前缀.比如,数据库中有一个自增的值,为,2.那么这个自增 ...