Пример #1
0
 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));
 }