public BatchSubscriptionHost( IObservableConnection connection, IRabbitMessageHandler <IEnumerable <T> > handler, IBatchSubscriptionConfig config, ILogger logger // , // IEnumerable<IBatchRabbitMessageInterceptor<T>> interceptors ) { logger.InfoFormat("Subscribing handler: {0} with Id {1}", config.Name, config.Id); Subscription = connection.SubscribeOnQueueToMessage(config, handler); }
public static IDisposable SubscribeOnQueueToMessage <T>(this IObservableConnection connection, IBatchSubscriptionConfig config, IRabbitMessageHandler <IEnumerable <T> > handler) { return(SubscribeWithAck(connection.Queue(config.QueueName) .Open() .Stream <T>() .Buffer(config.BufferTimeout, config.BufferSize) .Where(m => m.Any()) .Select(l => l.AsEnumerable()), l => { var rabbitMessages = l.ToArray(); handler.Handle(rabbitMessages.Select(m => m.Message)); })); }