Ejemplo n.º 1
0
 public void Raise(UrlLinkedEvent urlLinked)
 {
     using (var producer = new ProducerBuilder <Null, string>(_producerConfig).Build())
     {
         var eventMessage = JsonConvert.SerializeObject(urlLinked);
         _logger.LogInformation("Url linked event raised for url {shortUrl}", urlLinked.Url);
         producer.ProduceAsync(Environment.GetEnvironmentVariable("UrlLinked"), new Message <Null, string> {
             Value = eventMessage
         });
         producer.Flush(TimeSpan.FromSeconds(10));
     }
 }
 public void ListenMessage()
 {
     using (var scope = _serviceScopeFactory.CreateScope())
     {
         var message = _consumer.Consume(10000);
         if (message != null)
         {
             var            urlOperations = scope.ServiceProvider.GetRequiredService <ITinyUrlOperations>();
             UrlLinkedEvent linkedUrl     = JsonConvert.DeserializeObject <UrlLinkedEvent>(message.Message.Value);
             var            logger        = scope.ServiceProvider.GetRequiredService <ILogger <UrlLinkedEvent> >();
             if (linkedUrl.IsLinked)
             {
                 logger.LogInformation("Url Linked event recieved for {linkedUrl}", linkedUrl.Url);
                 urlOperations.LinkUrl(linkedUrl.Url);
             }
             else
             {
                 logger.LogInformation("Url unLinked event recieved for {linkedUrl}", linkedUrl.Url);
                 urlOperations.UnLinkUrl(linkedUrl.Url);
             }
             _consumer.Commit(message);
         }
     }
 }