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)); }
/// <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); } }
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)); }
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)); }