public async Task StartAsync(CancellationToken cancellationToken = default(CancellationToken)) { var existPath = await _client.ExistsAsync(ListenerPath); if (!existPath) { await _client.CreateRecursiveAsync(ListenerPath, Encoding.UTF8.GetBytes("Bucket.Listener")); } await _client.SubscribeDataChange(ListenerPath, async (ct, args) => { if (!_isSubscribe) { return; } var currentData = Encoding.UTF8.GetString(args.CurrentData.ToArray()); if (!string.IsNullOrWhiteSpace(currentData)) { var command = JsonConvert.DeserializeObject <Values.NetworkCommand>(currentData); if (args.Path.ToLower() == ListenerPath.ToLower()) { switch (args.Type) { case Watcher.Event.EventType.NodeDataChanged: await _extractCommand.ExtractCommandMessage(command); break; } } } }); _isSubscribe = true; }
public Task SubscribeAsync() { _subscriber = _redisClient.GetSubscriber(_redisListenerOptions.ConnectionString); return(_subscriber.SubscribeAsync(RedisListenerKey, (channel, message) => { var command = JsonConvert.DeserializeObject <Bucket.Values.NetworkCommand>(message); _extractCommand.ExtractCommandMessage(command); })); }