예제 #1
0
        public IDisposable Subscribe <T, TMessage>(
            ISubscription subscription,
            IExchange exchange = null,
            IQueue queue       = null,
            IEnumerable <IBinding> bindings = null) where T : ISubscriberHandler <TMessage>
        {
            using var channel = Connect().CreateModel();
            exchange?.Declare(channel);
            queue?.Declare(channel);
            bindings?.Bind(channel);

            var consumer = new Consumer <TMessage>(Connect(), subscription, _provider);

            _consumers.Add(consumer);
            return(new UnSubscriber(() =>
            {
                _consumers.Remove(consumer);
                consumer.Dispose();
            }));
        }