mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-21 11:56:38 +00:00
feat: improve webhook server and run script integration
- Enhance webhook example with proper shutdown handling using tokio::select! - Update run.sh to automatically start webhook server alongside main service - Add event notification configuration to run.sh using environment variables - Set proper port bindings to ensure webhook server starts on port 3000 - Improve console output for better debugging experience - Fix race condition during service startup and shutdown This change ensures proper integration between the webhook server and the main rustfs service, providing a seamless development experience with automatic service discovery and clean termination.
This commit is contained in:
@@ -8,7 +8,19 @@ async fn main() {
|
|||||||
let app = Router::new().route("/webhook", post(receive_webhook));
|
let app = Router::new().route("/webhook", post(receive_webhook));
|
||||||
// 启动服务器
|
// 启动服务器
|
||||||
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
|
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
|
||||||
axum::serve(listener, app).await.unwrap();
|
println!("Server running on http://0.0.0.0:3000");
|
||||||
|
|
||||||
|
// 创建关闭信号处理
|
||||||
|
tokio::select! {
|
||||||
|
result = axum::serve(listener, app) => {
|
||||||
|
if let Err(e) = result {
|
||||||
|
eprintln!("Server error: {}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ = tokio::signal::ctrl_c() => {
|
||||||
|
println!("Shutting down server...");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn receive_webhook(Json(payload): Json<Value>) -> StatusCode {
|
async fn receive_webhook(Json(payload): Json<Value>) -> StatusCode {
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
# config.toml
|
||||||
|
store_path = "./deploy/logs/event_store"
|
||||||
|
channel_capacity = 5000
|
||||||
|
|
||||||
|
[[adapters]]
|
||||||
|
type = "Webhook"
|
||||||
|
endpoint = "http://127.0.0.1:3000/webhook"
|
||||||
|
auth_token = "your-auth-token"
|
||||||
|
max_retries = 3
|
||||||
|
timeout = 50
|
||||||
|
|
||||||
|
[adapters.custom_headers]
|
||||||
|
custom_server = "value_server"
|
||||||
|
custom_client = "value_client"
|
||||||
|
|
||||||
|
#[[adapters]]
|
||||||
|
#type = "Kafka"
|
||||||
|
#brokers = "localhost:9092"
|
||||||
|
#topic = "notifications"
|
||||||
|
#max_retries = 3
|
||||||
|
#timeout = 60
|
||||||
|
#
|
||||||
|
#[[adapters]]
|
||||||
|
#type = "Mqtt"
|
||||||
|
#broker = "mqtt.example.com"
|
||||||
|
#port = 1883
|
||||||
|
#client_id = "event-notifier"
|
||||||
|
#topic = "events"
|
||||||
|
#max_retries = 3
|
||||||
+6
-1
@@ -57,9 +57,14 @@ export RUSTFS__SINKS__KAFKA__BOOTSTRAP_SERVERS=""
|
|||||||
export RUSTFS__SINKS__KAFKA__TOPIC=""
|
export RUSTFS__SINKS__KAFKA__TOPIC=""
|
||||||
export RUSTFS__LOGGER__QUEUE_CAPACITY=10
|
export RUSTFS__LOGGER__QUEUE_CAPACITY=10
|
||||||
|
|
||||||
|
# 事件消息配置
|
||||||
|
export RUSTFS_EVENT_CONFIG="./deploy/config/event.example.toml"
|
||||||
|
|
||||||
if [ -n "$1" ]; then
|
if [ -n "$1" ]; then
|
||||||
export RUSTFS_VOLUMES="$1"
|
export RUSTFS_VOLUMES="$1"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# 启动 webhook 服务器
|
||||||
|
cargo run --example webhook -p rustfs-event-notifier &
|
||||||
|
# 启动主服务
|
||||||
cargo run --bin rustfs
|
cargo run --bin rustfs
|
||||||
Reference in New Issue
Block a user