zoukankan      html  css  js  c++  java
  • Win10下Consul的搭建和.Net5的注册和获取(简单版)

    Consul的下载就不说了,解压包后吧安装路劲放到系统环境变量Path里面去

    consul的启动命令

    consul agent -dev

    验证启动成功网址:localhost:8500

    启动后就要给consul注册了

    全局仅一次的注册放在StartUp里,怎么封装先不说,具体实现是这样的

     //找到Consul
                ConsulClient client = new ConsulClient(c =>
                {
                    c.Address = new Uri("http://localhost:8500/");
                    c.Datacenter = "dcl";
                });
                string ip = Configuration["ip"];
                int port = Convert.ToInt32(Configuration["port"]);
                string tag = Configuration["tag"];
    
    
                client.Agent.ServiceRegister(new AgentServiceRegistration
                {
                    ID = $"Steven:{Guid.NewGuid()}",
                    Name = "StevenGroup",
                    Address = ip,
                    Port = port,
                    Tags = new string[] { tag },
                    Check = new AgentServiceCheck
                    {
                        Interval = TimeSpan.FromSeconds(10),//间隔固定的时间访问一次,https://localhost:44308/api/Health
                        HTTP = $"http://{ip}:{port}/Heart",//健康检查地址
                        Timeout = TimeSpan.FromSeconds(5)
                    }
                });
                Console.WriteLine("注册成功");

    我这里是通过控制台传参数进去给IP和Port的

    多个实例注册后

    值得一提的是在注册中的Name并不是标识,而是分组名称。。。。。

    这样就注册完事儿了,接下来说怎么去获取地址

           ConsulClient client = new ConsulClient(c =>
                {
                    c.Address = new Uri("http://localhost:8500/");
                    c.Datacenter = "dcl";
                });
                var response = client.Agent.Services().Result.Response;
    
    
                Uri uri = new Uri("http://StevenGroup/weatherforecasta");
                string groupName = uri.Host;
                AgentService agentService = null;
                var dic = response.Where(s => s.Value.Service.Equals(groupName, StringComparison.OrdinalIgnoreCase)).Reverse().ToArray();
    
                agentService = dic[0].Value;

    应该很好懂,主要是取出来,至于去取哪一个作为你的转发项,那就看你怎么分配了

    失败重试的逻辑我没写。就这样吧,这篇的目的就是让你的Consul先能跑起来

  • 相关阅读:
    [原创]c#快速排序类 Virus
    [原创]关系,依赖, Virus
    [原创]外包 Virus
    [原创]异步调用I/O方法的使用 Virus
    [原创]一个查找并且替换的算法 Virus
    封装原来的DirectoryInfo类,添加事件,可以代替FileSystemWatcher 类 Virus
    [原创]包头人在北京<一> Virus
    [原创]异步调用,多线程,委托 Virus
    [原创]异步,跨线程,非阻塞,DNS,Socket Virus
    [原创]大家动脑吧,一个面试题 Virus
  • 原文地址:https://www.cnblogs.com/SevenWang/p/15788592.html
Copyright © 2011-2022 走看看