| 1234567891011121314151617181920212223242526272829303132333435 | using Microsoft.Extensions.Configuration;using Microsoft.Extensions.Logging;using NATS.Client;using Worker.Messaging.Messages;namespace Worker.Messaging{    public class MessageQueue : IMessageQueue    {        protected readonly IConfiguration _configuration;        protected readonly ILogger _logger;        public MessageQueue(IConfiguration configuration, ILogger<MessageQueue> logger)        {            _configuration = configuration;            _logger = logger;        }        public void Publish<TMessage>(TMessage message)            where TMessage : Message        {            using (var connection = CreateConnection())            {                var data = MessageHelper.ToData(message);                connection.Publish(message.Subject, data);            }        }        public IConnection CreateConnection()        {            var url = _configuration.GetValue<string>("MessageQueue:Url");            return new ConnectionFactory().CreateConnection(url);        }    }}
 |