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); } } }