Пример #1
0
        /// <summary>
        /// Sends a prepared message
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="message">The prepared message</param>
        /// <param name="queueType">The type of queue to use</param>
        /// <param name="userId"></param>
        /// <param name="xml">Optional xml content. This will be logged depending on the logging level.</param>
        /// <returns></returns>
        private async Task Send(ILogger logger, IMessagingMessage message, QueueType queueType, string userId = "99999999999", XDocument xml = null)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            logger.LogStartSend(queueType, message.MessageFunction, message.FromHerId, message.ToHerId, message.MessageId, userId, xml);
            IMessagingSender messageSender = null;

            try
            {
                messageSender = SenderPool.CreateCachedMessageSender(logger, message.To);
                await messageSender.SendAsync(message).ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                throw new MessagingException(ex.Message)
                      {
                          EventId = EventIds.Send
                      };
            }
            finally
            {
                if (messageSender != null)
                {
                    SenderPool.ReleaseCachedMessageSender(logger, message.To);
                }
            }

            logger.LogEndSend(queueType, message.MessageFunction, message.FromHerId, message.ToHerId, message.MessageId, userId);
        }
Пример #2
0
        /// <summary>
        /// Sends a prepared message
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="message">The prepared message</param>
        /// <param name="queueType">The type of queue to use</param>
        /// <param name="userId"></param>
        /// <param name="xml">Optional xml content. This will be logged depending on the logging level.</param>
        /// <returns></returns>
        private async Task Send(ILogger logger, IMessagingMessage message, QueueType queueType, string userId = "99999999999", XDocument xml = null)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            IMessagingSender messageSender = null;

            try
            {
                messageSender = SenderPool.CreateCachedMessageSender(logger, message.To);
                await messageSender.SendAsync(message).ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                logger.LogException("Cannot send message to service bus. Invalid endpoint.", ex);

                throw new MessagingException(ex.Message)
                      {
                          EventId = EventIds.Send
                      };
            }
            finally
            {
                if (messageSender != null)
                {
                    SenderPool.ReleaseCachedMessageSender(logger, message.To);
                }
            }
        }