예제 #1
0
        public async Task SendAsync <TMessage>(TMessage message) where TMessage : IBusQueueMessage
        {
            if (string.IsNullOrEmpty(message.QueueName))
            {
                throw new ApplicationException("Queue name is mandatory");
            }

            var channel = new ConnectionFactory {
                Uri = new Uri(_connectionString)
            }
            .CreateConnection()
            .CreateModel();

            RabbitmqResourceManager
            .EnlistToTransaction(channel, Transaction.Current);

            var body = _messageFactory.CreateMessage(message);

            channel.BasicPublish(
                exchange: string.Empty,
                routingKey: message.QueueName,
                basicProperties: null,
                body: body);
        }