public RedisHubLifetimeManager(ILogger <RedisHubLifetimeManager <THub> > logger, IOptions <RedisOptions> options, IHubProtocolResolver hubProtocolResolver) { _logger = logger; _options = options.Value; _ackHandler = new AckHandler(); _channels = new RedisChannels(typeof(THub).FullName); _protocol = new RedisProtocol(hubProtocolResolver.AllProtocols); var writer = new LoggerTextWriter(logger); RedisLog.ConnectingToEndpoints(_logger, options.Value.Options.EndPoints, _serverName); _redisServerConnection = _options.Connect(writer); _redisServerConnection.ConnectionRestored += (_, e) => { // We use the subscription connection type // Ignore messages from the interactive connection (avoids duplicates) if (e.ConnectionType == ConnectionType.Interactive) { return; } RedisLog.ConnectionRestored(_logger); }; _redisServerConnection.ConnectionFailed += (_, e) => { // We use the subscription connection type // Ignore messages from the interactive connection (avoids duplicates) if (e.ConnectionType == ConnectionType.Interactive) { return; } RedisLog.ConnectionFailed(_logger, e.Exception); }; if (_redisServerConnection.IsConnected) { RedisLog.Connected(_logger); } else { RedisLog.NotConnected(_logger); } _bus = _redisServerConnection.GetSubscriber(); SubscribeToAll(); SubscribeToGroupManagementChannel(); SubscribeToAckChannel(); }
public RedisHubLifetimeManager(ILogger <RedisHubLifetimeManager <THub> > logger, IOptions <RedisOptions> options, IHubProtocolResolver hubProtocolResolver) { _logger = logger; _options = options.Value; _ackHandler = new AckHandler(); _channels = new RedisChannels(typeof(THub).FullName); _protocol = new RedisProtocol(hubProtocolResolver.AllProtocols); RedisLog.ConnectingToEndpoints(_logger, options.Value.Options.EndPoints, _serverName); }
public ShardingRedisHubLifetimeManager(ILogger <RedisHubLifetimeManager <THub> > logger, IOptions <ShardingRedisOptions> options, IHubProtocolResolver hubProtocolResolver) { _logger = logger; _options = options.Value; _ackHandler = new AckHandler(); _channels = new RedisChannels(typeof(THub).FullName); _protocol = new RedisProtocol(hubProtocolResolver.AllProtocols); _ = EnsureRedisServerConnection(); }
public void SendMessage(RedisChannels channel, RedisMessage message = null) { message = message ?? new DefaultRedisMessage(); #if log Console.WriteLine("Sending Message: " + channel + " " + str); Console.WriteLine(); #endif database.ListLeftPush($"{channel}-bl", ObjectToByteArray(message)); subscriber.Publish(channel.ToString(), ""); }
public Task <RedisMessage> AskQuestion(RedisChannels channelEnum, RedisMessage message = null) { var channel = channelEnum.ToString(); message = message ?? new DefaultRedisMessage(); #if log Console.WriteLine("Asking Question: " + channel + " " + str); Console.WriteLine(); #endif database.ListLeftPush($"{channel}-bl", ObjectToByteArray(message)); subscriber.Publish(channel, ""); return(lateTaskManager.Build(message.Guid)); }
public void SendMessage(RedisChannels channel, RedisMessage message = null) { message = message ?? new DefaultRedisMessage(); string str = JsonConvert.SerializeObject(message, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Objects }); #if log Console.WriteLine("Sending Message: " + channel + " " + str); Console.WriteLine(); #endif database.ListLeftPush($"{channel}-bl", str); subscriber.Publish(channel.ToString(), ""); }
public Task<RedisMessage> AskQuestion(RedisChannels channelEnum, RedisMessage message = null) { var channel = channelEnum.ToString(); message = message ?? new DefaultRedisMessage(); string str = JsonConvert.SerializeObject(message, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Objects }); #if log Console.WriteLine("Asking Question: " + channel + " " + str); Console.WriteLine(); #endif database.ListLeftPush($"{channel}-bl", str); subscriber.Publish(channel, ""); return lateTaskManager.Build(message.Guid); }
/// <summary> /// Constructs the <see cref="RedisHubLifetimeManager{THub}"/> with types from Dependency Injection. /// </summary> /// <param name="logger">The logger to write information about what the class is doing.</param> /// <param name="options">The <see cref="RedisOptions"/> that influence behavior of the Redis connection.</param> /// <param name="hubProtocolResolver">The <see cref="IHubProtocolResolver"/> to get an <see cref="IHubProtocol"/> instance when writing to connections.</param> /// <param name="globalHubOptions">The global <see cref="HubOptions"/>.</param> /// <param name="hubOptions">The <typeparamref name="THub"/> specific options.</param> public RedisHubLifetimeManager(ILogger <RedisHubLifetimeManager <THub> > logger, IOptions <RedisOptions> options, IHubProtocolResolver hubProtocolResolver, IOptions <HubOptions>?globalHubOptions, IOptions <HubOptions <THub> >?hubOptions) { _logger = logger; _options = options.Value; _ackHandler = new AckHandler(); _channels = new RedisChannels(typeof(THub).FullName !); if (globalHubOptions != null && hubOptions != null) { _protocol = new RedisProtocol(new DefaultHubMessageSerializer(hubProtocolResolver, globalHubOptions.Value.SupportedProtocols, hubOptions.Value.SupportedProtocols)); } else { var supportedProtocols = hubProtocolResolver.AllProtocols.Select(p => p.Name).ToList(); _protocol = new RedisProtocol(new DefaultHubMessageSerializer(hubProtocolResolver, supportedProtocols, null)); } RedisLog.ConnectingToEndpoints(_logger, options.Value.Configuration.EndPoints, _serverName); _ = EnsureRedisServerConnection(); }
public void SubscribeToAnswers(RedisChannels channel) { subscriber.Subscribe(channel.ToString(), onReceiveMessage); }
public void Subscribe(RedisChannels channel, Action <RedisMessage> resolve) { subscriptions.Add(channel.ToString(), resolve); subscriber.Subscribe(channel.ToString(), onReceiveMessage); }
public void Subscribe(RedisChannels channel, Action<RedisMessage> resolve) { subscriptions.Add(channel.ToString(), resolve); subscriber.Subscribe(channel.ToString(), onReceiveMessage); }