async Task DehydrateTransportMessage(OutgoingStepContext context, TransportMessage transportMessage) { var messageId = transportMessage.GetMessageId(); try { using (var source = new MemoryStream(transportMessage.Body)) { var attachment = await _dataBus.CreateAttachment(source); var headers = transportMessage.Headers.Clone(); headers[Headers.MessagePayloadAttachmentId] = attachment.Id; context.Save(new TransportMessage(headers, EmptyMessageBody)); } } catch (Exception exception) { throw new RebusApplicationException(exception, $"Could not create (automatic claim check) attachment for outgoing message with ID {messageId}"); } }
public Task ProcessAsync(StepContext context, Func <Task> next, IValidator validator, ValidationResult validationResult) { OriginalTransportMessage originalTransportMessage = context.Load <OriginalTransportMessage>(); TransportMessage transportMessage = originalTransportMessage.TransportMessage; ITransactionContext transactionContext = context.Load <ITransactionContext>(); _logger.Debug(string.Format(CultureInfo.CurrentCulture, Resources.ValidationFailed_MovingToErrorQueue, "{MessageType}", "{MessageId}"), transportMessage.GetMessageType(), transportMessage.GetMessageId()); var ex = new ValidationException(validationResult.Errors); return(_errorHandler.HandlePoisonMessage(transportMessage, transactionContext, ex)); }