コード例 #1
0
 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));
     });
 }