MessageQueue.cs 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using Microsoft.Extensions.Configuration;
  2. using Microsoft.Extensions.Logging;
  3. using NATS.Client;
  4. using Vote.Messaging.Messages;
  5. namespace Vote.Messaging
  6. {
  7. public class MessageQueue : IMessageQueue
  8. {
  9. protected readonly IConfiguration _configuration;
  10. protected readonly ILogger _logger;
  11. public MessageQueue(IConfiguration configuration, ILogger<MessageQueue> logger)
  12. {
  13. _configuration = configuration;
  14. _logger = logger;
  15. }
  16. public void Publish<TMessage>(TMessage message)
  17. where TMessage : Message
  18. {
  19. using (var connection = CreateConnection())
  20. {
  21. var data = MessageHelper.ToData(message);
  22. connection.Publish(message.Subject, data);
  23. }
  24. }
  25. public IConnection CreateConnection()
  26. {
  27. var url = _configuration.GetValue<string>("MessageQueue:Url");
  28. return new ConnectionFactory().CreateConnection(url);
  29. }
  30. }
  31. }