public void OnMessage(Func <RedisExchangeModel, Task> asyncHandler) { _channelMessageQueue.OnMessage(async channelMessage => { try { var message = channelMessage.Message; RedisExchangeModel exchangeModel = JsonConvert.DeserializeObject <RedisExchangeModel>(message); await asyncHandler(exchangeModel); } catch (Exception ex) when(!(_nEvents is null)) { _nEvents.OnException(ex); } }); }
public void Publish <T>(T model, Dictionary <string, string> properties = null) { //TODO : add a formatter RedisExchangeModel exchangeModel = new RedisExchangeModel(); exchangeModel.Properties = properties ?? new Dictionary <string, string>(); NotificationRouteDescriptor route = this._routes.GetRoute <T>(); if (route is null) { throw new Exception($"THere is no route registered for the model {typeof(T).FullName}"); } exchangeModel.Properties.Add("RouteName", route.RouteName); exchangeModel.Body = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(model)); _redisPublisher.Publish(exchangeModel); }
public Task PublishAsync(RedisExchangeModel redisExchangeModel) { return(_subscriber.PublishAsync(_channel, JsonConvert.SerializeObject(redisExchangeModel))); }
public void Publish(RedisExchangeModel redisExchangeModel) { _subscriber.Publish(_channel, JsonConvert.SerializeObject(redisExchangeModel)); }