public void Run(IConnection nats, ConnectionMultiplexer redis) { var events = nats.Observe("events") .Where(m => m.Data?.Any() == true) .Select(m => Encoding.Default.GetString(m.Data)); events.Subscribe(msg => { IDatabase db = redis.GetDatabase(); string id = msg.Split('|').Last(); string JSON = db.StringGet(id); Console.WriteLine($"Successfully got message {id}"); RedisPayloadModel model = null; try { model = JsonSerializer.Deserialize <RedisPayloadModel>(JSON); } catch (Exception ex) { Console.Error.WriteLine($"Deserialize error: {ex.Message}"); return; } Console.WriteLine("Starting calculating rank..."); double rank = GetTextRank(model.Data); Console.WriteLine($"Calculation has been successfull! Rank is {rank}"); model.Rank = rank; var payload = JsonSerializer.Serialize(model); db.StringSet(id, payload); }); }
private void PublishRedisMessage(string id, string description, string data) { var model = new RedisPayloadModel { Description = description, Data = data }; string result = JsonSerializer.Serialize(model); IDatabase db = _redis.GetDatabase(); db.StringSet(id, result); }