Пример #1
0
        private void SendMessage(YambrEmailSettings setting, IQueueObject queueObject)
        {
            if (string.IsNullOrWhiteSpace(queueObject?.Message))
            {
                throw new Exception(SR.T("Ошибка отправки сообщения.") + Environment.NewLine + SR.T("Нельзя отправить пустое текстовое сообщение."));
            }
            var body = Encoding.UTF8.GetBytes(queueObject.Message);

            if (setting == null)
            {
                throw new Exception(SR.T("Не переданы необходимые параметры."));
            }
            if (body == null)
            {
                throw new Exception(SR.T("Ошибка отправки сообщения.") + Environment.NewLine + SR.T("Нельзя отправить пустое текстовое сообщение."));
            }
            try
            {
                var connectionFactory = new ConnectionFactory
                {
                    HostName    = setting.HostName,
                    VirtualHost = setting.VirtualHost,
                    Protocol    = Protocols.AMQP_0_9_1,
                    Port        = setting.Port,
                    UserName    = setting.UserName,
                    Password    = setting.Password
                };
                var connectionFactory2 = connectionFactory;
                using (var connection = connectionFactory2.CreateConnection())
                {
                    using (var model = connection.CreateModel())
                    {
                        var basicProperties = model.CreateBasicProperties();
                        basicProperties.DeliveryMode = 2;
                        basicProperties.Headers      = queueObject.Headers;
                        basicProperties.AppId        = "ELMA";
                        model.BasicPublish(QueueConstants.ExchangeMailBox, queueObject.RoutingKey, basicProperties, body);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message, ex);
                throw;
            }
        }
Пример #2
0
 private static string GetHost(YambrEmailSettings setting)
 {
     return(setting != null ? $"amqp://{setting.HostName}:{setting.Port}" : "");
 }