/// <inheritdoc /> /// <summary> /// Отправляет сообщение в очередь /// </summary> /// <returns>Отправленное сообщение с заполнеными датой отправки и идентификатором сообщения</returns> public BaseMessage Send(BaseMessage message) { _logger.LogDebug("Try to send message to queue with id: {queueId}", _configuration.Id); message.ThrowIfNull(nameof(message)); CheckDisposed(); CheckAndReconnect(); try { var body = message.GetMessageBodyAsBytes(); _advancedBus.Publish(_exchange, _configuration.Id, false, message.ConvertToProperties(_configuration), body); _logger.LogDebug("Done to send message to queue with id: {queueId}", _configuration.Id); LogMessageInternal(message, true); return(message); } catch (Exception ex) { _logger.LogError(ex, "RabbitMQ PUT failure on queue with ID: {queueId}", _configuration.Id); throw new MessagingException(ex, "Messaging error while sending message. See inner exception for more details"); } }