/// <summary> /// Initializes a new instance of the <see cref="Producer" /> class. /// </summary> /// <param name="broker"> /// The <see cref="IBroker" /> that instantiated this producer. /// </param> /// <param name="endpoint"> /// The endpoint to produce to. /// </param> /// <param name="behaviorsProvider"> /// The <see cref="IBrokerBehaviorsProvider{TBehavior}" />. /// </param> /// <param name="serviceProvider"> /// The <see cref="IServiceProvider" /> to be used to resolve the needed services. /// </param> /// <param name="logger"> /// The <see cref="IOutboundLogger{TCategoryName}" />. /// </param> protected Producer( IBroker broker, IProducerEndpoint endpoint, IBrokerBehaviorsProvider <IProducerBehavior> behaviorsProvider, IServiceProvider serviceProvider, IOutboundLogger <Producer> logger) { Broker = Check.NotNull(broker, nameof(broker)); Endpoint = Check.NotNull(endpoint, nameof(endpoint)); _behaviors = Check.NotNull(behaviorsProvider, nameof(behaviorsProvider)).GetBehaviorsList(); _serviceProvider = Check.NotNull(serviceProvider, nameof(serviceProvider)); _logger = Check.NotNull(logger, nameof(logger)); _envelopeFactory = _serviceProvider.GetRequiredService <OutboundEnvelopeFactory>(); Endpoint.Validate(); }
public void CreateOutboundEnvelope_NullMessage_UntypedEnvelopeReturned() { var endpoint = TestProducerEndpoint.GetDefault(); var headers = new[] { new MessageHeader("one", "1"), new MessageHeader("two", "2") }; var factory = new OutboundEnvelopeFactory( new OutboundRoutingConfiguration { PublishOutboundMessagesToInternalBus = true }); var envelope = factory.CreateOutboundEnvelope( null, headers, TestProducerEndpoint.GetDefault()); envelope.Should().BeOfType <OutboundEnvelope>(); envelope.Message.Should().BeNull(); envelope.Headers.Should().ContainSingle(header => header.Name == "one" && header.Value == "1"); envelope.Headers.Should().ContainSingle(header => header.Name == "two" && header.Value == "2"); envelope.Endpoint.Should().Be(endpoint); }