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(); }
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(); } }
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); }