public ActiveMqConsumer(IServiceProvider serviceProvider, ContextualReceiveObservable receiveObservable, Func <CancellationToken, Task <IConsumer> > consumerFactory, Func <Message, IConsumer, IServiceProvider, CancellationToken, Task> handler) { _serviceProvider = serviceProvider; _receiveObservable = receiveObservable; _logger = serviceProvider.GetService <ILogger <ActiveMqConsumer> >(); _consumerFactory = consumerFactory; _handler = handler; }
private static void AddConsumer(this IActiveMqBuilder builder, ConsumerConfiguration consumerConfiguration, Action <ContextualReceiveObservable> configureContextualReceiveObservableAction, Func <Message, IConsumer, IServiceProvider, CancellationToken, Task> handler) { builder.Services.AddSingleton(provider => { var receiveObservable = provider.GetServices <ReceiveObservable>().Single(x => x.Name == builder.Name); var contextualReceiveObservable = new ContextualReceiveObservable(receiveObservable); configureContextualReceiveObservableAction(contextualReceiveObservable); return(new ActiveMqConsumer(provider, contextualReceiveObservable, async token => { var connection = await provider.GetConnection(builder.Name, token); return await connection.CreateConsumerAsync(consumerConfiguration, token).ConfigureAwait(false); }, handler)); }); }