public OutboxProduceStrategyImplementation(
     TransactionalOutboxBroker outboundQueueBroker,
     IOutboundLogger <OutboxProduceStrategy> logger)
 {
     _outboundQueueBroker = outboundQueueBroker;
     _logger = logger;
 }
Ejemplo n.º 2
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="Producer{TBroker,TEndpoint}" /> 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(
     TBroker broker,
     TEndpoint endpoint,
     IBrokerBehaviorsProvider <IProducerBehavior> behaviorsProvider,
     IServiceProvider serviceProvider,
     IOutboundLogger <Producer> logger)
     : base(broker, endpoint, behaviorsProvider, serviceProvider, logger)
 {
 }
Ejemplo n.º 3
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="OutboundQueueProducer" /> class.
 /// </summary>
 /// <param name="queueWriter">
 ///     The <see cref="IOutboxWriter" /> to be used to write to the queue.
 /// </param>
 /// <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>
 public OutboundQueueProducer(
     IOutboxWriter queueWriter,
     TransactionalOutboxBroker broker,
     IProducerEndpoint endpoint,
     IBrokerBehaviorsProvider <IProducerBehavior> behaviorsProvider,
     IServiceProvider serviceProvider,
     IOutboundLogger <Producer> logger)
     : base(broker, endpoint, behaviorsProvider, serviceProvider, logger)
 {
     _queueWriter = queueWriter;
 }
Ejemplo n.º 4
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="OutboxWorker" /> class.
 /// </summary>
 /// <param name="serviceScopeFactory">
 ///     The <see cref="IServiceScopeFactory" /> used to resolve the scoped types.
 /// </param>
 /// <param name="brokerCollection">
 ///     The collection containing the available brokers.
 /// </param>
 /// <param name="routingConfiguration">
 ///     The configured outbound routes.
 /// </param>
 /// <param name="logger">
 ///     The <see cref="IOutboundLogger{TCategoryName}" />.
 /// </param>
 /// <param name="enforceMessageOrder">
 ///     Specifies whether the messages must be produced in the same order as they were added to the queue.
 ///     If set to <c>true</c> the message order will be ensured, retrying the same message until it can be
 ///     successfully
 ///     produced.
 /// </param>
 /// <param name="batchSize">
 ///     The number of messages to be loaded and processed at once.
 /// </param>
 public OutboxWorker(
     IServiceScopeFactory serviceScopeFactory,
     IBrokerCollection brokerCollection,
     IOutboundRoutingConfiguration routingConfiguration,
     IOutboundLogger <OutboxWorker> logger,
     bool enforceMessageOrder,
     int batchSize)
 {
     _serviceScopeFactory = serviceScopeFactory;
     _brokerCollection    = brokerCollection;
     _logger = logger;
     _enforceMessageOrder  = enforceMessageOrder;
     _batchSize            = batchSize;
     _routingConfiguration = routingConfiguration;
 }
Ejemplo n.º 5
0
        public OutboundLoggerTests()
        {
            var serviceProvider = ServiceProviderHelper.GetServiceProvider(
                services => services
                .AddLoggerSubstitute(LogLevel.Trace)
                .AddSilverback()
                .WithConnectionToMessageBroker(options => options.AddKafka()));

            _loggerSubstitute =
                (LoggerSubstitute <OutboundLoggerTests>)serviceProvider
                .GetRequiredService <ILogger <OutboundLoggerTests> >();

            _outboundLogger = serviceProvider
                              .GetRequiredService <IOutboundLogger <OutboundLoggerTests> >();
        }
Ejemplo n.º 6
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));

            Endpoint.Validate();
        }
Ejemplo n.º 7
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="KafkaProducer" /> 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="producersCache">
        ///     The <see cref="IConfluentProducersCache" />.
        /// </param>
        /// <param name="serviceProvider">
        ///     The <see cref="IServiceProvider" /> to be used to resolve the required services.
        /// </param>
        /// <param name="logger">
        ///     The <see cref="IOutboundLogger{TCategoryName}" />.
        /// </param>
        public KafkaProducer(
            KafkaBroker broker,
            KafkaProducerEndpoint endpoint,
            IBrokerBehaviorsProvider <IProducerBehavior> behaviorsProvider,
            IConfluentProducersCache producersCache,
            IServiceProvider serviceProvider,
            IOutboundLogger <KafkaProducer> logger)
            : base(broker, endpoint, behaviorsProvider, serviceProvider, logger)
        {
            Check.NotNull(endpoint, nameof(endpoint));
            Check.NotNull(serviceProvider, nameof(serviceProvider));

            _confluentClientsCache = Check.NotNull(producersCache, nameof(producersCache));
            _logger = Check.NotNull(logger, nameof(logger));
        }
        public ValidatorProducerBehaviorTests()
        {
            var serviceProvider = ServiceProviderHelper.GetServiceProvider(
                services => services
                .AddLoggerSubstitute(LogLevel.Trace)
                .AddSilverback()
                .WithConnectionToMessageBroker(
                    options => options
                    .AddBroker <TestBroker>()));

            _loggerSubstitute =
                (LoggerSubstitute <ValidatorProducerBehavior>)serviceProvider
                .GetRequiredService <ILogger <ValidatorProducerBehavior> >();

            _outboundLogger = serviceProvider
                              .GetRequiredService <IOutboundLogger <ValidatorProducerBehavior> >();
        }
Ejemplo n.º 9
0
        public IntegrationLoggingBenchmark()
        {
            var serviceProvider = ServiceProviderHelper.GetServiceProvider(
                services => services
                .AddFakeLogger()
                .AddSilverback()
                .WithConnectionToMessageBroker(broker => broker.AddKafka()));

            _inboundLogger =
                serviceProvider.GetRequiredService <IInboundLogger <IntegrationLoggingBenchmark> >();

            _outboundLogger =
                serviceProvider.GetRequiredService <IOutboundLogger <IntegrationLoggingBenchmark> >();

            _inboundEnvelope = new RawInboundEnvelope(
                Array.Empty <byte>(),
                new MessageHeaderCollection
            {
                new("Test", "Test"),
                new(DefaultMessageHeaders.FailedAttempts, "1"),
                new(DefaultMessageHeaders.MessageType, "Something.Xy"),
                new(DefaultMessageHeaders.MessageId, "1234"),
                new(KafkaMessageHeaders.KafkaMessageKey, "key1234")
            },
 /// <summary>
 ///     Initializes a new instance of the <see cref="ValidatorProducerBehavior" /> class.
 /// </summary>
 /// <param name="logger">
 ///     The <see cref="IOutboundLogger{TCategoryName}" />.
 /// </param>
 public ValidatorProducerBehavior(IOutboundLogger <ValidatorProducerBehavior> logger)
 {
     _logger = Check.NotNull(logger, nameof(logger));
 }