public InitializerPublishContextPipe(IMessageHeaderInitializer <TMessage, TInput>[] initializers, InitializeMessageContext <TMessage, TInput> context, IPipe <PublishContext> pipe) { _initializers = initializers; _sendPipe = pipe; _context = context; }
public async Task Publish(IPublishEndpoint endpoint, TInput input, IPipe <PublishContext <TMessage> > pipe, CancellationToken cancellationToken) { InitializeMessageContext <TMessage, TInput> messageContext = await InitializeMessage(input, cancellationToken).ConfigureAwait(false); await endpoint.Publish(messageContext.Message, _headerInitializers.Length > 0?new InitializerPublishContextPipe(_headerInitializers, messageContext, pipe) : pipe, cancellationToken); }
public InitializerSendContextPipe(IMessageHeaderInitializer <TMessage, TInput>[] initializers, InitializeMessageContext <TMessage, TInput> context, IPipe <SendContext <TMessage> > pipe) { _initializers = initializers; _pipe = pipe; _context = context; }
public Task Apply(InitializeMessageContext <TMessage, TInput> context, SendContext <TMessage> sendContext) { var inputPropertyValue = _inputProperty.Get(context.Input); _headerProperty.Set(sendContext, inputPropertyValue); return(TaskUtil.Completed); }
public InitializeMessageContext <TMessage> Create(InitializeMessageContext context) { var message = new TImplementation(); var messageContext = new DynamicInitializeMessageContext <TMessage>(context, message); return(messageContext); }
async Task <InitializeMessageContext <TMessage, TInput> > InitializeMessage(TInput input, CancellationToken cancellationToken) { var context = new BaseInitializeMessageContext(typeof(TMessage), cancellationToken); InitializeMessageContext <TMessage> messageContext = _factory.Create(context); InitializeMessageContext <TMessage, TInput> inputContext = messageContext.CreateInputContext <TInput>(input); await Task.WhenAll(_initializers.Select(x => x.Apply(inputContext))).ConfigureAwait(false); return(inputContext); }
public Task Apply(InitializeMessageContext <TMessage, TInput> context) { var inputProperty = _inputProperty.Get(context.Input); if (_converter.TryConvert(inputProperty, out var messageProperty)) { _messageProperty.Set(context.Message, messageProperty); return(TaskUtil.Completed); } throw new MassTransitException($"The input property {_inputProperty.Name} could not be converted to the message property {_messageProperty.Name}."); }
public async Task Send(ISendEndpoint endpoint, TInput input, IPipe <SendContext> pipe, CancellationToken cancellationToken) { InitializeMessageContext <TMessage, TInput> messageContext = await InitializeMessage(input, cancellationToken).ConfigureAwait(false); if (_headerInitializers.Length > 0) { await endpoint.Send(messageContext.Message, new InitializerSendContextPipe(_headerInitializers, messageContext, pipe), cancellationToken) .ConfigureAwait(false); } else { await endpoint.Send(messageContext.Message, pipe, cancellationToken).ConfigureAwait(false); } }
public Task Apply(InitializeMessageContext <TMessage, TInput> context, SendContext <TMessage> sendContext) { return(_initializer.Apply(context, sendContext)); }
public DynamicInitializeMessageContext(InitializeMessageContext context, TMessage message) { _context = context; Message = message; }
public Task Apply(InitializeMessageContext <TMessage, TInput> context) { _messageProperty.Set(context.Message, _inputProperty.Get(context.Input)); return(TaskUtil.Completed); }