Exemplo n.º 1
0
        public static void Main(string[] args)
        {
            var cnInfo = NatsConfig.GetConnectionInfo();

            //Subscribe using handler
            Sample1.RunAsync(cnInfo).Wait();

            //Automatic unsub after 3 messages
            //Sample2.RunAsync(cnInfo).Wait();

            //Subscribe using observer
            //Sample3.RunAsync(cnInfo).Wait();

            //Observer with exception handlers etc
            //Sample4.RunAsync(cnInfo).Wait();

            //RX, transform, filter, sampling
            //Sample5.RunAsync(cnInfo).Wait();

            //Queue groups (NEEDS two or more consumers)
            //Randomizes
            //Sample6.RunAsync(cnInfo).Wait();

            //Respond to request (NEEDS SampleRequester)
            //Sample7.RunAsync(cnInfo).Wait();

            //In-process handler subscription with wildcards
            //(NEEDS SamplePublisherWildcards) against
            //"demo.a" and "demo.b"
            //Sample8.RunAsync(cnInfo).Wait();

            //Wildcards (NEEDS SamplePublisherWildcards)
            //Sample9.RunAsync(cnInfo).Wait();

            //Consume JSON (NEEDS SamplePublisherJson)
            //Sample10.RunAsync(cnInfo).Wait();
        }
Exemplo n.º 2
0
        public void Can_Be_Initialized_And_Terminated_Multiple_Times()
        {
            var natsConfig = new NatsConfig(
                endpoint: "http://127.0.0.1:4222",
                connectionTimeoutMs: 1000,
                requestTimeoutMs: 5000,
                serverShutdownDeadlineMs: 10 * 1000,
                serverMaxNumberOfRpcs: int.MaxValue,
                maxConnectionRetries: 3,
                maxPendingMessages: 100);

            var sdCfg = new SDConfig(
                endpoints: "http://127.0.0.1:2379",
                etcdPrefix: "pitaya/",
                serverTypeFilters: new List <string>(),
                heartbeatTTLSec: 10,
                logHeartbeat: false,
                logServerSync: false,
                logServerDetails: false,
                syncServersIntervalSec: 10,
                maxNumberOfRetries: 0
                );

            var server = new Server(
                id: "myserverid",
                type: "myservertype",
                metadata: "",
                hostname: "",
                frontend: false
                );

            for (var i = 0; i < 2; ++i)
            {
                PitayaCluster.Initialize(natsConfig, sdCfg, server, NativeLogLevel.Debug);
                PitayaCluster.Terminate();
            }
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            Logger.SetLevel(LogLevel.DEBUG);

            Console.WriteLine("c# prog running");

            string serverId = System.Guid.NewGuid().ToString();

            var sdConfig = new SDConfig(
                endpoints: "http://127.0.0.1:2379",
                etcdPrefix: "pitaya/",
                serverTypeFilters: new List <string>(),
                heartbeatTTLSec: 60,
                logHeartbeat: true,
                logServerSync: true,
                logServerDetails: true,
                syncServersIntervalSec: 30,
                maxNumberOfRetries: 0,
                retryDelayMilliseconds: 0);

            var sv = new Server(
                id: serverId,
                type: "csharp",
                metadata: "",
                hostname: "localhost",
                frontend: false);

            var natsConfig = new NatsConfig(
                endpoint: "127.0.0.1:4222",
                connectionTimeoutMs: 2000,
                requestTimeoutMs: 1000,
                serverShutdownDeadlineMs: 3,
                serverMaxNumberOfRpcs: 100,
                maxConnectionRetries: 3,
                maxPendingMessages: 1000,
                reconnectBufSize: 4 * 1024 * 1024);

            var grpcConfig = new GrpcConfig(
                host: "127.0.0.1",
                port: 5444,
                serverShutdownDeadlineMs: 2000,
                serverMaxNumberOfRpcs: 200,
                clientRpcTimeoutMs: 10000
                );

            Dictionary <string, string> constantTags = new Dictionary <string, string>
            {
                { "game", "game" },
                { "serverType", "svType" }
            };
            var statsdMR = new StatsdMetricsReporter("localhost", 5000, "game", constantTags);

            MetricsReporters.AddMetricReporter(statsdMR);
            var prometheusMR = new PrometheusMetricsReporter("default", "game", 9090);

            MetricsReporters.AddMetricReporter(prometheusMR);

            PitayaCluster.AddSignalHandler(() =>
            {
                Logger.Info("Calling terminate on cluster");
                PitayaCluster.Terminate();
                Logger.Info("Cluster terminated, exiting app");
                Environment.Exit(1);
                //Environment.FailFast("oops");
            });

            try
            {
                PitayaCluster.Initialize(
                    grpcConfig,
                    sdConfig,
                    sv,
                    NativeLogLevel.Debug,
                    new PitayaCluster.ServiceDiscoveryListener((action, server) =>
                {
                    switch (action)
                    {
                    case PitayaCluster.ServiceDiscoveryAction.ServerAdded:
                        Console.WriteLine("Server was added");
                        Console.WriteLine("    id: " + server.id);
                        Console.WriteLine("  type: " + server.type);
                        break;

                    case PitayaCluster.ServiceDiscoveryAction.ServerRemoved:
                        Console.WriteLine("Server was removed");
                        Console.WriteLine("    id: " + server.id);
                        Console.WriteLine("  type: " + server.type);
                        break;

                    default:
                        throw new ArgumentOutOfRangeException(nameof(action), action, null);
                    }
                }));
                //PitayaCluster.Initialize(natsConfig, sdConfig, sv, NativeLogLevel.Debug, "");
            }
            catch (PitayaException exc)
            {
                Logger.Error("Failed to create cluster: {0}", exc.Message);
                Environment.Exit(1);
            }

            Logger.Info("pitaya lib initialized successfully :)");

            var tr = new TestRemote();

            PitayaCluster.RegisterRemote(tr);
            var th = new TestHandler();

            PitayaCluster.RegisterHandler(th);

            Thread.Sleep(1000);

            TrySendRpc();
            Console.ReadKey();
            PitayaCluster.Terminate();
        }
    private void Init()
    {
        Debug.Log("Init button clicked!");

        NPitaya.Models.Logger.SetLevel(LogLevel.DEBUG);
        Console.WriteLine("c# prog running");

        string serverId = Guid.NewGuid().ToString();

        var sdConfig = new SDConfig(
            endpoints: "http://10.0.21.167:2379",
            etcdPrefix: "pitaya/",
            serverTypeFilters: new List <string>(),
            heartbeatTTLSec: 60,
            logHeartbeat: false,
            logServerSync: true,
            logServerDetails: false,
            syncServersIntervalSec: 60,
            maxNumberOfRetries: 10,
            retryDelayMilliseconds: 100);

        var grpcConfig = new GrpcConfig(
            host: "127.0.0.1",
            port: 3000,
            serverShutdownDeadlineMs: 3000,
            serverMaxNumberOfRpcs: 1000,
            clientRpcTimeoutMs: 4000
            );

        var sv = new Server(
            serverId,
            "csharp",
            "{\"ip\":\"127.0.0.1\"}",
            "localhost",
            false);

        var nc = new NatsConfig(
            endpoint: "127.0.0.1:4222",
            connectionTimeoutMs: 2000,
            requestTimeoutMs: 2000,
            serverShutdownDeadlineMs: 4000,
            serverMaxNumberOfRpcs: 1000,
            maxConnectionRetries: 10,
            maxPendingMessages: 100,
            reconnectBufSize: 4 * 1024 * 1024);

        Debug.Log("Adding signal handler");
        Debug.Log("Adding signal handler DONE");

        try
        {
            Debug.Log("Initializing PitayaCluster");
            // PitayaCluster.Initialize(sdConfig, nc, sv);

            var listener = new PitayaCluster.ServiceDiscoveryListener((action, server) =>
            {
                switch (action)
                {
                case PitayaCluster.ServiceDiscoveryAction.ServerAdded:
                    Debug.Log("Server added:");
                    Debug.Log("    id:  " + server.id);
                    Debug.Log("    type:" + server.type);
                    break;

                case PitayaCluster.ServiceDiscoveryAction.ServerRemoved:
                    Debug.Log("Server removed:");
                    Debug.Log("    id:  " + server.id);
                    Debug.Log("    type:" + server.type);
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(action), action, null);
                }
            });
                    #if UNITY_EDITOR
            PitayaCluster.Initialize(nc, sdConfig, sv, NativeLogLevel.Debug, listener, "MY_LOG_FILE.txt");
                    #else
            PitayaCluster.Initialize(grpcConfig, sdConfig, sv, NativeLogLevel.Debug, listener);
            #endif
        }
        catch (PitayaException e)
        {
            Debug.LogError($"Failed to create cluster {e.Message}");
            Application.Quit();
            return;
        }

        NPitaya.Models.Logger.Info("pitaya lib initialized successfully :)");

        var tr = new TestRemote();
        PitayaCluster.RegisterRemote(tr);
    }