3个版本
新 0.0.7 | 2024年8月21日 |
---|---|
0.0.6 | 2024年8月17日 |
0.0.4 | 2024年8月7日 |
#756 in HTTP服务器
每月下载量 262次
43KB
994 代码行
依赖
spring-job = { version = "0.0.7" }
API接口
应用程序实现JobConfigurator功能,可用于配置定时任务
#[tokio::main]
async fn main() {
App::new()
.add_plugin(JobPlugin)
.add_plugin(SqlxPlugin)
+ .add_jobs(jobs())
.run()
.await
}
+fn jobs() -> Jobs {
+ Jobs::new().typed_job(cron_job)
+}
+#[cron("1/10 * * * * *")]
+async fn cron_job() {
+ println!("cron scheduled: {:?}", SystemTime::now())
+}
您还可以使用auto_config
宏来实现自动配置。此过程宏将自动将由过程宏标记的定时任务注册到应用程序中
+#[auto_config(JobConfigurator)]
#[tokio::main]
async fn main() {
App::new()
.add_plugin(JobPlugin)
.add_plugin(SqlxPlugin)
- .add_jobs(jobs())
.run()
.await
}
提取插件注册的组件
上面的SqlxPlugin
插件自动为我们注册了一个Sqlx连接池组件。我们可以使用Component
从应用程序中提取此连接池。需要注意的是,尽管spring-job的
Component
和spring-web的
Component
的实现原理类似,但这两个提取器属于不同的crate。
use spring::cron;
use spring_sqlx::{
sqlx::{self, Row}, ConnectPool
};
use spring_job::extractor::Component;
#[cron("1/10 * * * * *")]
async fn cron_job(Component(db): Component<ConnectPool>) {
let time: String = sqlx::query("select DATE_FORMAT(now(),'%Y-%m-%d %H:%i:%s') as time")
.fetch_one(&db)
.await
.context("query failed")
.unwrap()
.get("time");
println!("cron scheduled: {:?}", time)
}
依赖
~13–24MB
~329K SLoC