Example #1
0
        /// <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();
        }
Example #2
0
        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);
        }