/// <summary> /// Adds the message identifier tag. /// </summary> /// <param name="span">The span.</param> /// <param name="message">The message.</param> public static void AddMessageIdTag(this ISpan span, IQueueOutputMessage message) { if (message.SentMessage.MessageId.HasValue) { span.SetTag("MessageId", message.SentMessage.MessageId.Id.Value.ToString()); } }
/// <summary> /// Sends a new message to an existing queue /// </summary> /// <param name="messageToSend">The message to send.</param> /// <param name="data">The additional data.</param> /// <returns></returns> public IQueueOutputMessage Send(IMessage messageToSend, IAdditionalMessageData data) { IQueueOutputMessage result = null; if (_policy == null) { _policies.Registry.TryGet(_policies.Definition.SendMessage, out _policy); } if (_policy != null) { _policy.Execute(() => result = _handler.Send(messageToSend, data)); } else //no policy found { result = _handler.Send(messageToSend, data); } return(result); }
/// <summary> /// Sends a new message to an existing queue /// </summary> /// <param name="messageToSend">The message to send.</param> /// <param name="data">The additional data.</param> /// <returns></returns> public async Task <IQueueOutputMessage> SendAsync(IMessage messageToSend, IAdditionalMessageData data) { IQueueOutputMessage result = null; if (_policyAsync == null) { _policies.Registry.TryGet(_policies.Definition.SendMessageAsync, out _policyAsync); } if (_policyAsync != null) { await _policyAsync.ExecuteAsync(async() => result = await _handler.SendAsync(messageToSend, data).ConfigureAwait(false)).ConfigureAwait(false); } else //no policy found { result = await _handler.SendAsync(messageToSend, data).ConfigureAwait(false); } return(result); }
/// <summary> /// Initializes a new instance of the <see cref="JobQueueOutputMessage" /> class. /// </summary> /// <param name="message">The message.</param> /// <param name="status">The status.</param> public JobQueueOutputMessage(IQueueOutputMessage message, JobQueuedStatus status) : base(message.SentMessage, message.SendingException) { Status = status; }
private IJobQueueOutputMessage ProcessResult(IScheduledJob job, DateTimeOffset scheduledTime, IQueueOutputMessage result) { //no errors, so just return if (!result.HasError) { return(new JobQueueOutputMessage(result, JobQueuedStatus.Success)); } //this is not an error for the job already existing in the queue if (!JobAlreadyExistsError(result.SendingException)) { return(new JobQueueOutputMessage(result, JobQueuedStatus.Failed)); } var status = DoesJobExist(job.Name, scheduledTime); switch (status) { case QueueStatuses.Processing: return(new JobQueueOutputMessage(result, JobQueuedStatus.AlreadyQueuedProcessing)); case QueueStatuses.Waiting: return(new JobQueueOutputMessage(result, JobQueuedStatus.AlreadyQueuedWaiting)); case QueueStatuses.Processed: return(new JobQueueOutputMessage(result, JobQueuedStatus.AlreadyProcessed)); case QueueStatuses.Error: DeleteJob(job.Name); return(null); default: return(null); //try to re-queue once; if this is second try and this happens again, an error will be returned } }
private IJobQueueOutputMessage ProcessResult(IScheduledJob job, DateTimeOffset scheduledTime, IQueueOutputMessage result) { //no errors, so just return if (!result.HasError) return new JobQueueOutputMessage(result, JobQueuedStatus.Success); //this is not an error for the job already existing in the queue if (!JobAlreadyExistsError(result.SendingException)) return new JobQueueOutputMessage(result, JobQueuedStatus.Failed); var status = DoesJobExist(job.Name, scheduledTime); switch (status) { case QueueStatuses.Processing: return new JobQueueOutputMessage(result, JobQueuedStatus.AlreadyQueuedProcessing); case QueueStatuses.Waiting: return new JobQueueOutputMessage(result, JobQueuedStatus.AlreadyQueuedWaiting); case QueueStatuses.Processed: return new JobQueueOutputMessage(result, JobQueuedStatus.AlreadyProcessed); case QueueStatuses.Error: DeleteJob(job.Name); return null; default: return null; //try to re-queue once; if this is second try and this happens agian, an error will be returned } }
/// <summary> /// Initializes a new instance of the <see cref="JobQueueOutputMessage" /> class. /// </summary> /// <param name="message">The message.</param> /// <param name="status">The status.</param> public JobQueueOutputMessage(IQueueOutputMessage message, JobQueuedStatus status): base(message.SentMessage, message.SendingException) { Status = status; }