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; } }
private static string GetHost(YambrEmailSettings setting) { return(setting != null ? $"amqp://{setting.HostName}:{setting.Port}" : ""); }