/// <summary> /// Runs the cluster client startup task. /// </summary> /// <param name="cancellationToken">The cancellation token.</param> protected override async Task ExecuteAsync(CancellationToken cancellationToken) { await ClusterClient.Connect(async ex => { cancellationToken.ThrowIfCancellationRequested(); await Task.Delay(TimeSpan.FromMilliseconds(300), cancellationToken).ConfigureAwait(false); return(true); }).ConfigureAwait(false); StartupContext.MarkTaskAsComplete(); }
public async Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation("Connecting..."); var maxRetries = _configuration.GetValue <int>("Orleans:Client:Connect:MaxRetries"); var retryDelay = _configuration.GetValue <TimeSpan>("Orleans:Client:Connect:RetryDelay"); await ClusterClient.Connect(async error => { _logger.LogError(error, "Error Connecting: {@Message}", error.Message); if (--maxRetries < 0) { return(false); } await Task.Delay(retryDelay, cancellationToken); return(true); }); _logger.LogInformation("Connected."); }
public static async Task StartAsync() { if (ClusterClient == null) { ClusterClient = new ClientBuilder() .UseLocalhostClustering() .Configure <ClusterOptions>(options => { options.ClusterId = "GameState"; options.ServiceId = "ServerEngine"; }) .ConfigureApplicationParts(parts => { parts.AddApplicationPart(typeof(IGameUniverseGrain).Assembly).WithReferences(); }) .ConfigureLogging(logging => { logging.AddConsole(); }) .Build(); } await ClusterClient.Connect(); }
/// <summary> /// Creates a Cluster Server that creates Fragment Servers to be used. /// TODO: Will currently only create a single server for itself. /// </summary> public ClusterServer(int _maxConnections = 0, ushort _port = 6257) : base(ServerType.ClusterServer, _maxConnections, _port) { Start(ServerType.ClusterServer); masterConn.Connect(); }