studio/java.md

3.6 KiB

/* Demo for Basic Nacos Opreation App.csproj

*/

using Microsoft.Extensions.DependencyInjection; using Nacos.V2; using Nacos.V2.DependencyInjection; using System; using System.Collections.Generic; using System.Threading.Tasks;

class Program { static async Task Main(string[] args) { string serverAddr = "http://localhost:8848"; string dataId = "application-prod.yml"; string group = "DEFAULT_GROUP";

    IServiceCollection services = new ServiceCollection();

    services.AddNacosV2Config(x =>
    {
        x.ServerAddresses = new List<string> { serverAddr };
        x.Namespace = "cs-test";

        // swich to use http or rpc
        x.ConfigUseRpc = true;
    });

    IServiceProvider serviceProvider = services.BuildServiceProvider();
    var configSvc = serviceProvider.GetService<INacosConfigService>();

    var content = await configSvc.GetConfig(dataId, group, 3000);
    Console.WriteLine(content);

    var listener = new ConfigListener();

    await configSvc.AddListener(dataId, group, listener);

    var isPublishOk = await configSvc.PublishConfig(dataId, group, "content");
    Console.WriteLine(isPublishOk);

    await Task.Delay(3000);
    content = await configSvc.GetConfig(dataId, group, 5000);
    Console.WriteLine(content);

    var isRemoveOk = await configSvc.RemoveConfig(dataId, group);
    Console.WriteLine(isRemoveOk);
    await Task.Delay(3000);

    content = await configSvc.GetConfig(dataId, group, 5000);
    Console.WriteLine(content);
    await Task.Delay(300000);
}

internal class ConfigListener : IListener
{
    public void ReceiveConfigInfo(string configInfo)
    {
        Console.WriteLine("receive:" + configInfo);
    }
}

}

/* Refer to document: https://github.com/nacos-group/nacos-sdk-csharp/tree/dev/samples/MsConfigApp Demo for ASP.NET Core Integration MsConfigApp.csproj

*/

using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Serilog; using Serilog.Events;

public class Program { public static void Main(string[] args) { Log.Logger = new LoggerConfiguration() .Enrich.FromLogContext() .MinimumLevel.Override("Microsoft", LogEventLevel.Warning) .MinimumLevel.Override("System", LogEventLevel.Warning) .MinimumLevel.Debug() .WriteTo.Console() .CreateLogger();

    try
    {
        Log.ForContext<Program>().Information("Application starting...");
        CreateHostBuilder(args, Log.Logger).Build().Run();
    }
    catch (System.Exception ex)
    {
        Log.ForContext<Program>().Fatal(ex, "Application start-up failed!!");
    }
    finally
    {
        Log.CloseAndFlush();
    }
}

public static IHostBuilder CreateHostBuilder(string[] args, Serilog.ILogger logger) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((context, builder) =>
        {
            var c = builder.Build();
            builder.AddNacosV2Configuration(c.GetSection("NacosConfig"), logAction: x => x.AddSerilog(logger));
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>().UseUrls("http://*:8787");
        })
        .UseSerilog();

}