Ejemplo n.º 1
0
        public override Task <QueuePublishResult> PublishAsync <T>(T message, QueueMessageContext messageContext,
                                                                   PublishAsyncDelegate <T>?callback = null)
        {
            if (!FailOnPublish)
            {
                return(base.PublishAsync(message, messageContext, callback));
            }
            var result = new QueuePublishResult();

            result.SetError("Middleware failed publish");
            return(Task.FromResult(result));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Formats and writes an queue publish error log message.
        /// </summary>
        /// <param name="logger">The <see cref="ILogger"/> to write to.</param>
        /// <param name="queuePublishResult">The publish result to log.</param>
        /// <param name="message">Format string of the log message in message template format. Example: <code>"User {User} logged in from {Address}"</code></param>
        /// <param name="args">An object array that contains zero or more objects to format.</param>
        /// <example>logger.LogError(queuePublishResult, "Error while processing request from {Address}", address)</example>
        public static void LogError(this ILogger logger, QueuePublishResult queuePublishResult, string message,
                                    params object[] args)
        {
            var newArgs = args.Append(queuePublishResult.GetErrorText());

            if (queuePublishResult.Exception != null)
            {
                logger.LogError(queuePublishResult.Exception, "{Message}: {ErrorText}", message, newArgs);
            }
            else
            {
                logger.LogError("{Message}: {ErrorText}", message, newArgs);
            }
        }
Ejemplo n.º 3
0
        protected override Task <QueuePublishResult> DoPublishAsync <T>(T message, QueueMessageContext messageContext)
        {
            var result = new QueuePublishResult();

            try
            {
                var channel = GetOrCreateChannel <T>();
                channel.Publish(message, messageContext);
            }
            catch (Exception ex)
            {
                result.SetException(ex);
            }

            return(Task.FromResult(result));
        }
Ejemplo n.º 4
0
        public virtual Task <QueuePublishResult> PublishAsync <T>(T message, QueueMessageContext messageContext,
                                                                  PublishAsyncDelegate <T>?callback = null) where T : class
        {
            if (Next != null)
            {
                return(Next.PublishAsync(message, messageContext, callback));
            }

            if (callback != null)
            {
                return(callback(message, messageContext));
            }

            var result = new QueuePublishResult();

            result.SetError("Message reached end of pipeline");
            return(Task.FromResult(result));
        }