#service #requests #resolver #client #registering #dns #eureka

eureka-client

处理对 Eureka 的 HTTP 请求以及注册服务

4 个版本

使用旧 Rust 2015

0.0.4 2018年9月21日
0.0.3 2018年3月25日
0.0.2 2018年3月24日
0.0.1 2018年3月21日

#1 in #registering

MIT 许可证

34KB
864

Rust 的 Eureka 客户端

该项目目前处于 alpha 版本,如版本号所示。

功能

  • 在 Eureka 中注册服务
  • 向 Eureka 发送心跳保持连接

已实现但未测试的功能

  • 通过 Eureka 连接的服务请求

未实现的功能

  • DNS 和 AWS 解析器

安装

eureka-client 添加到您的 Cargo.toml,并在项目的根目录中添加 extern crate eureka_client

用法

要初始化 eureka 客户端并与 eureka 注册,您将执行类似以下操作

use eureka::{BaseConfig, EurekaClient, PortData};

pub fn init_eureka(
    server_host: String,
    server_port: u16,
    instance_ip_addr: String,
    instance_port: u16,
) -> EurekaClient {
    let mut config = BaseConfig::default();
    config.eureka.host = server_host;
    config.eureka.port = server_port;
    config.instance.ip_addr = instance_ip_addr;
    config.instance.port = Some(PortData::new(instance_port, true));
    let eureka = EurekaClient::new(config);
    eureka.start();
    eureka
}

您需要保持此客户端活跃,直到您打算连接到 Eureka。例如,在 Rocket 中,您可以将其作为状态管理,并通过路由访问它,就像访问其他状态一样,例如调用我们上面的函数

rocket::ignite()
    .mount("/api/", routes![])
    .manage(init_eureka(
        dotenv!("EUREKA_HOST").into(),
        dotenv!("EUREKA_PORT")
            .parse()
            .expect("Eureka port not valid"),
        env::var("EUREKA_INSTANCE_IP").unwrap_or_else(|_| "127.0.0.1".to_string()),
        env::var("ROCKET_PORT")
            .map_err(|_| ())
            .and_then(|port| port.parse().map_err(|_| ()))
            .unwrap_or(8080),
    ))

此客户端默认会注册到 eureka。如果您只想使用此客户端进行请求,则可以通过设置 config.eureka.register_with_eureka = false 来禁用注册。

依赖关系

~20MB
~433K SLoC