spring rs
0.3.0
ภาษาอังกฤษ | 中文
Spring-RS เป็นเฟรมเวิร์กแอปพลิเคชันที่เน้นการประชุมเกี่ยวกับการกำหนดค่าซึ่งได้รับแรงบันดาลใจจาก Springboot ของ Java Spring-RS ให้บริการปลั๊กอินที่ขยายได้อย่างง่ายดายสำหรับการรวมโครงการที่ยอดเยี่ยมในชุมชนสนิมเช่น Axum, SQLX, Sea-orm ฯลฯ
เมื่อเปรียบเทียบกับ Springboot ใน Java Spring-RS มีประสิทธิภาพที่สูงขึ้นและการใช้หน่วยความจำที่ต่ำกว่าช่วยให้คุณกำจัด JVM ที่ป่องและไฟเดินทางได้อย่างสมบูรณ์
เว็บ
use spring :: { auto_config , App } ;
use spring_sqlx :: {
sqlx :: { self , Row } ,
ConnectPool , SqlxPlugin
} ;
use spring_web :: { get , route } ;
use spring_web :: {
error :: Result , extractor :: { Path , Component } , handler :: TypeRouter , axum :: response :: IntoResponse , Router ,
WebConfigurator , WebPlugin ,
} ;
use anyhow :: Context ;
# [ auto_config ( WebConfigurator ) ]
# [ tokio :: main ]
async fn main ( ) {
App :: new ( )
. add_plugin ( SqlxPlugin )
. add_plugin ( WebPlugin )
. run ( )
. await
}
# [ get ( "/" ) ]
async fn hello_world ( ) -> impl IntoResponse {
"hello world"
}
# [ route ( "/hello/:name" , method = "GET" , method = "POST" ) ]
async fn hello ( Path ( name ) : Path < String > ) -> impl IntoResponse {
format ! ( "hello {name}" )
}
# [ get ( "/version" ) ]
async fn sqlx_request_handler ( Component ( pool ) : Component < ConnectPool > ) -> Result < String > {
let version = sqlx :: query ( "select version() as version" )
. fetch_one ( & pool )
. await
. context ( "sqlx query failed" ) ?
. get ( "version" ) ;
Ok ( version )
}งาน
use anyhow :: Context ;
use spring :: { auto_config , App } ;
use spring_job :: { cron , fix_delay , fix_rate } ;
use spring_job :: { extractor :: Component , JobConfigurator , JobPlugin } ;
use spring_sqlx :: {
sqlx :: { self , Row } ,
ConnectPool , SqlxPlugin ,
} ;
use std :: time :: { Duration , SystemTime } ;
# [ auto_config ( JobConfigurator ) ]
# [ tokio :: main ]
async fn main ( ) {
App :: new ( )
. add_plugin ( JobPlugin )
. add_plugin ( SqlxPlugin )
. run ( )
. await ;
tokio :: time :: sleep ( Duration :: from_secs ( 100 ) ) . await ;
}
# [ cron ( "1/10 * * * * *" ) ]
async fn cron_job ( Component ( db ) : Component < ConnectPool > ) {
let time : String = sqlx :: query ( "select TO_CHAR(now(),'YYYY-MM-DD HH24:MI:SS') as time" )
. fetch_one ( & db )
. await
. context ( "query failed" )
. unwrap ( )
. get ( "time" ) ;
println ! ( "cron scheduled: {:?}" , time )
}
# [ fix_delay ( 5 ) ]
async fn fix_delay_job ( ) {
let now = SystemTime :: now ( ) ;
let datetime : sqlx :: types :: chrono :: DateTime < sqlx :: types :: chrono :: Local > = now . into ( ) ;
let formatted_time = datetime . format ( "%Y-%m-%d %H:%M:%S" ) ;
println ! ( "fix delay scheduled: {}" , formatted_time )
}
# [ fix_rate ( 5 ) ]
async fn fix_rate_job ( ) {
tokio :: time :: sleep ( Duration :: from_secs ( 10 ) ) . await ;
let now = SystemTime :: now ( ) ;
let datetime : sqlx :: types :: chrono :: DateTime < sqlx :: types :: chrono :: Local > = now . into ( ) ;
let formatted_time = datetime . format ( "%Y-%m-%d %H:%M:%S" ) ;
println ! ( "fix rate scheduled: {}" , formatted_time )
} spring-web : ขึ้นอยู่กับ axum spring-sqlx : รวมเข้ากับ sqlx spring-postgres : รวมกับ rust-postgres spring-sea-orm : บูรณาการกับ sea-orm spring-redis : รวมเข้ากับ redis spring-mail : รวมเข้ากับ lettre spring-job : รวมเข้ากับ tokio-cron-scheduler spring-stream : รวม sea-streamer เพื่อใช้การประมวลผลข้อความเช่น Redis-Stream และ Kafka spring-opentelemetry : รวมเข้ากับ opentelemetry เพื่อใช้การสังเกตอย่างเต็มที่ของการบันทึกการวัดการติดตาม spring-tarpc : รวม tarpc เพื่อใช้การโทร RPC spring-sqlx-migration-pluginspring-opendalเพิ่มเติม >>
นอกจากนี้เรายังยินดีต้อนรับผู้เชี่ยวชาญชุมชนที่มีส่วนร่วมในปลั๊กอินของตัวเอง มีส่วนร่วม→
คลิกที่นี่เพื่อดูปัญหาทั่วไปที่พบเมื่อใช้ความช่วยเหลือ spring-rs →