- add: utils library
- add: packet-service to handle game client packets - fix: health check for database-service - fix: health check for auth-service
This commit is contained in:
@@ -1,59 +0,0 @@
|
||||
use reqwest::Client;
|
||||
use serde::Serialize;
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct ConsulRegistration {
|
||||
name: String,
|
||||
address: String,
|
||||
port: u16,
|
||||
check: ConsulCheck,
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct ConsulCheck {
|
||||
http: String,
|
||||
interval: String,
|
||||
}
|
||||
|
||||
pub async fn register_service(
|
||||
consul_url: &str,
|
||||
service_name: &str,
|
||||
service_address: &str,
|
||||
service_port: u16,
|
||||
health_check_url: &str,
|
||||
) -> Result<(), Box<dyn std::error::Error>> {
|
||||
let registration = ConsulRegistration {
|
||||
name: service_name.to_string(),
|
||||
address: service_address.to_string(),
|
||||
port: service_port,
|
||||
check: ConsulCheck {
|
||||
http: health_check_url.to_string(),
|
||||
interval: "10s".to_string(), // Health check interval
|
||||
},
|
||||
};
|
||||
|
||||
let client = Client::new();
|
||||
let consul_register_url = format!("{}/v1/agent/service/register", consul_url);
|
||||
|
||||
client
|
||||
.put(&consul_register_url)
|
||||
.json(®istration)
|
||||
.send()
|
||||
.await?
|
||||
.error_for_status()?; // Ensure response is successful
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn deregister_service(consul_url: &str, service_name: &str) -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = Client::new();
|
||||
let consul_deregister_url = format!("{}/v1/agent/service/deregister/{}", consul_url, service_name);
|
||||
|
||||
client
|
||||
.put(&consul_deregister_url)
|
||||
.send()
|
||||
.await?
|
||||
.error_for_status()?; // Ensure response is successful
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -9,12 +9,11 @@ use std::env;
|
||||
use std::net::ToSocketAddrs;
|
||||
use std::str::FromStr;
|
||||
use std::sync::Arc;
|
||||
use tokio::{select, signal};
|
||||
use tokio::{select, signal};
|
||||
use tonic::transport::Server;
|
||||
use tracing::{info, Level};
|
||||
use warp::Filter;
|
||||
|
||||
mod consul_registration;
|
||||
use utils::consul_registration;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
@@ -25,6 +24,8 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
|
||||
let addr = env::var("DATABASE_SERVICE_ADDR").unwrap_or_else(|_| "127.0.0.1".to_string());
|
||||
let port = env::var("DATABASE_SERVICE_PORT").unwrap_or_else(|_| "50052".to_string());
|
||||
let health_port = env::var("HEALTH_CHECK_PORT").unwrap_or_else(|_| "8080".to_string());
|
||||
|
||||
let database_url = std::env::var("DATABASE_URL").expect("DATABASE_URL must be set");
|
||||
let redis_url = std::env::var("REDIS_URL").unwrap_or_else(|_| "redis://127.0.0.1:6379".to_string());
|
||||
|
||||
@@ -32,8 +33,8 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let service_name = env::var("SERVICE_NAME").unwrap_or_else(|_| "database-service".to_string());
|
||||
let service_address = addr.as_str();
|
||||
let service_port = port.clone();
|
||||
let health_check_url = format!("http://{}:{}/health", service_address, service_port);
|
||||
let health_check_endpoint_addr = format!("{}:8080", service_address);
|
||||
let health_check_url = format!("http://{}:{}/health", service_address, health_port);
|
||||
let health_check_endpoint_addr = format!("{}:{}", service_address, health_port);
|
||||
|
||||
// Register service with Consul
|
||||
consul_registration::register_service(
|
||||
|
||||
Reference in New Issue
Block a user