瀏覽代碼

【框架搭建】临时提交

yuanan 1 月之前
父節點
當前提交
3a3fceb310
共有 6 個文件被更改,包括 73 次插入0 次删除
  1. 44 0
      Cargo.lock
  2. 2 0
      Cargo.toml
  3. 3 0
      emu-config.yaml
  4. 7 0
      src/cmd/config.rs
  5. 1 0
      src/internal/utils/mod.rs
  6. 16 0
      src/internal/utils/mq.rs

+ 44 - 0
Cargo.lock

@@ -26,6 +26,31 @@ dependencies = [
  "memchr",
 ]
 
+[[package]]
+name = "amqp_serde"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "787581044ca08ad61cdb3a4e21afba087fb8cdba3bb3e23ce69a7d091808014d"
+dependencies = [
+ "bytes",
+ "serde",
+ "serde_bytes_ng",
+]
+
+[[package]]
+name = "amqprs"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e93684f1ae3c63429509ce3bf8a587bffc414f71a13810ed3e5f2c8757888b0"
+dependencies = [
+ "amqp_serde",
+ "async-trait",
+ "bytes",
+ "serde",
+ "serde_bytes",
+ "tokio",
+]
+
 [[package]]
 name = "android-tzdata"
 version = "0.1.1"
@@ -461,6 +486,7 @@ dependencies = [
 name = "inpower-iot-mgc-rs"
 version = "0.1.0"
 dependencies = [
+ "amqprs",
  "anyhow",
  "async-trait",
  "chrono",
@@ -811,6 +837,24 @@ dependencies = [
  "serde_derive",
 ]
 
+[[package]]
+name = "serde_bytes"
+version = "0.11.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_bytes_ng"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bdb0ebce8684e2253f964e8b6ce51f0ccc6666bbb448fb4a6788088bda6544b6"
+dependencies = [
+ "serde",
+]
+
 [[package]]
 name = "serde_derive"
 version = "1.0.217"

+ 2 - 0
Cargo.toml

@@ -31,5 +31,7 @@ log = "0.4.25"
 rand = "0.9.0"
 # 异步trait支持
 async-trait = "0.1.86"
+# RammitMQ 消息队列支持
+amqprs = "2.1.0"
 
 

+ 3 - 0
emu-config.yaml

@@ -5,3 +5,6 @@ emu:
   ems:
     # 读取间隔, 单位ms
     read_interval: 1000
+rabbitmq:
+  host: '122.51.163.61'
+  port: 5672

+ 7 - 0
src/cmd/config.rs

@@ -7,6 +7,7 @@ pub static EMU_CONFIG: OnceLock<AppConfig> = OnceLock::new();
 #[derive(Debug, Serialize, Deserialize)]
 pub struct AppConfig {
     pub emu: EmuConfig,
+    pub rabbitmq: RabbitMQConfig,
 }
 
 #[derive(Serialize, Deserialize, Debug)]
@@ -26,3 +27,9 @@ pub struct EmsConfig {
 }
 #[derive(Serialize, Deserialize, Debug)]
 pub struct BmsConfig {}
+
+#[derive(Serialize, Deserialize, Debug)]
+pub struct RabbitMQConfig {
+    pub host: String,
+    pub port: u16,
+}

+ 1 - 0
src/internal/utils/mod.rs

@@ -2,6 +2,7 @@ use rand::distr::Alphanumeric;
 use rand::{rng, Rng};
 
 pub mod log;
+pub mod mq;
 
 pub fn generate_random_str(len: usize) -> String {
     rng()

+ 16 - 0
src/internal/utils/mq.rs

@@ -0,0 +1,16 @@
+use crate::cmd::config::EMU_CONFIG;
+use amqprs::connection::{Connection, OpenConnectionArguments};
+use std::sync::OnceLock;
+pub static MQ: OnceLock<RabbitMQ> = OnceLock::new();
+
+pub struct RabbitMQ {
+    pub conn: Connection,
+}
+
+impl RabbitMQ {
+    pub async fn new() -> Result<Self, anyhow::Error> {
+        let string = EMU_CONFIG.get().unwrap().rabbitmq.host.as_str();
+        let conn = Connection::open(&OpenConnectionArguments::new("", 0, "", "")).await?;
+        Ok(RabbitMQ { conn })
+    }
+}