protected override void ConfigureConsumer( IReceiveEndpointConfigurator endpointConfigurator, IConsumerConfigurator <UserConsumer> consumerConfigurator) { consumerConfigurator.Message <CreateUser>(m => m.UseFilter(new UserFilter())); }
protected override void ConfigureConsumer( IReceiveEndpointConfigurator endpointConfigurator, // endPoint 는 이걸로 설정 IConsumerConfigurator <SubmitOrderConsumer> consumerConfigurator // consumer pipeline 을 설정. ) { // 메시지 처리시 Unhandled Exception 발생하면, Retry 하게 할 수 있다. endpointConfigurator.UseMessageRetry(configurator => { configurator.Intervals(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(10)); }); // pipeline! DEMO! (DEMO 는 DEMO일 뿐 통상 아래같은 코드는 하지 않는다. ) // 잘 보면 ... pipeline = middleware! // 1) 현 Consumer에 대한 Pipeline 구성 // consumerConfigurator.UseFilter(new RepeatFilter<ConsumerConsumeContext<SubmitOrderConsumer>>()); consumerConfigurator.UseExecuteAsync(context => { Console.WriteLine("@@@ {0} --> {1}", context.SourceAddress, context.DestinationAddress); return(Task.CompletedTask); }); // 2) 현 Consumer의 특정 메시지에 대한 pipeline 구성 consumerConfigurator.Message <SubmitOrder>(configurator => { configurator.UseExecuteAsync(context => { Console.WriteLine("@@@@ SubmitOrder 메시지가 왔네요? : {0}.", context.Message); return(Task.CompletedTask); }); }); }
protected override void ConfigureConsumer(IReceiveEndpointConfigurator endpointConfigurator, IConsumerConfigurator <SubmitOrderConsumer> consumerConfigurator) { endpointConfigurator.UseMessageRetry(r => r.Interval(3, 1000)); endpointConfigurator.UseServiceScope(_serviceProvider); consumerConfigurator.Message <SubmitOrder>(m => m.UseFilter(new ContainerScopedFilter())); }
void IConsumerConfigurationObserver.ConsumerMessageConfigured <T, TMessage>(IConsumerMessageConfigurator <T, TMessage> configurator) { var specification = new ConsumeContextRetryPipeSpecification <ConsumeContext <TMessage>, RetryConsumeContext <TMessage> >(Factory, _cancellationToken); _configure?.Invoke(specification); _configurator.Message <TMessage>(x => x.AddPipeSpecification(specification)); }
void IConsumerConfigurationObserver.ConsumerMessageConfigured <T, TMessage>(IConsumerMessageConfigurator <T, TMessage> configurator) { var specification = new InMemoryOutboxSpecification <TMessage>(); _configure?.Invoke(specification); _configurator.Message <TMessage>(x => x.AddPipeSpecification(specification)); }
protected override void ConfigureConsumer(IReceiveEndpointConfigurator endpointConfigurator, IConsumerConfigurator <ScheduleMessageConsumer> consumerConfigurator) { if (endpointConfigurator is IRabbitMqReceiveEndpointConfigurator rabbit) { rabbit.PrefetchCount = (ushort)(_endpointDefinition.ConcurrentMessageLimit ?? 32); } consumerConfigurator.Message <ScheduleMessage>(m => m.UsePartitioner(_endpointDefinition.Partition, p => p.Message.CorrelationId)); }
void IConsumerConfigurationObserver.ConsumerMessageConfigured <T, TMessage>(IConsumerMessageConfigurator <T, TMessage> configurator) { var redeliverySpecification = new DelayedRedeliveryPipeSpecification <TMessage>(); var retrySpecification = new RedeliveryRetryPipeSpecification <TMessage>(); _configure?.Invoke(retrySpecification); _configurator.Message <TMessage>(x => { x.AddPipeSpecification(redeliverySpecification); x.AddPipeSpecification(retrySpecification); }); }
void IConsumerConfigurationObserver.ConsumerMessageConfigured <T, TMessage>(IConsumerMessageConfigurator <T, TMessage> configurator) { var specification = new ConcurrencyLimitConsumePipeSpecification <TMessage>(Limiter); _configurator.Message <TMessage>(x => x.AddPipeSpecification(specification)); }
protected override void ConfigureConsumer(IReceiveEndpointConfigurator endpointConfigurator, IConsumerConfigurator <CancelScheduledMessageConsumer> consumerConfigurator) { consumerConfigurator.Message <CancelScheduledMessage>(m => m.UsePartitioner(_endpointDefinition.Partition, p => p.Message.TokenId)); }
protected override void ConfigureConsumer(IReceiveEndpointConfigurator endpointConfigurator, IConsumerConfigurator <CreateWorkItemConsumer> consumerConfigurator) { consumerConfigurator.Message <CreateWorkItemEvent>(m => m.UseFilter(new ContainerScopedFilter())); }
protected override void ConfigureConsumer(IReceiveEndpointConfigurator endpointConfigurator, IConsumerConfigurator <AddPaymentConsumer> consumerConfigurator) { consumerConfigurator.Message <AddPaymentMessage>(x => x.UsePartitioner(8, m => m.Message.Id)); }