Exemple #1
0
        private void StartConsumingInternal()
        {
            if (disposed)
            {
                return;
            }

            if (!connection.IsConnected)
            {
                // connection is not connected, so just ignore this call. A consumer will
                // be created and start consuming when the connection reconnects.
                return;
            }

            if (shouldRecover && configuration.RecoveryAction != null)
            {
                configuration.RecoveryAction();
            }
            var internalConsumer = internalConsumerFactory.CreateConsumer();

            internalConsumers.TryAdd(internalConsumer, null);

            internalConsumer.Cancelled    += consumer => Dispose();
            internalConsumer.ConsumerLost += OnConsumerLost;

            internalConsumer.StartConsuming(
                connection,
                queue,
                onMessage,
                configuration
                );
        }
        private void StartConsumingInternal()
        {
            if (disposed)
            {
                return;
            }

            if (!connection.IsConnected)
            {
                // connection is not connected, so just ignore this call. A consumer will
                // be created and start consuming when the connection reconnects.
                return;
            }

            var internalConsumer = internalConsumerFactory.CreateConsumer();

            internalConsumers.TryAdd(internalConsumer, null);

            internalConsumer.Cancelled += consumer => Dispose();

            internalConsumer.StartConsuming(
                connection,
                queueConsumerPairs,
                configuration);
        }
Exemple #3
0
        private void StartConsumer()
        {
            if (disposed)
            {
                return;
            }
            if (!connection.IsConnected)
            {
                return;
            }

            lock (syncLock)
            {
                if (isStarted)
                {
                    return;
                }
                var internalConsumer = internalConsumerFactory.CreateConsumer();
                internalConsumers.TryAdd(internalConsumer, null);
                internalConsumer.Cancelled += consumer => Dispose();
                var status = internalConsumer.StartConsuming(connection, queue, onMessage, configuration);
                if (status == StartConsumingStatus.Succeed)
                {
                    isStarted = true;
                }
                else
                {
                    internalConsumer.Dispose();
                    object value;
                    internalConsumers.TryRemove(internalConsumer, out value);
                }
            }
        }
Exemple #4
0
        private void StartConsumingInternal()
        {
            if (disposed)
            {
                return;
            }

            var internalConsumer = internalConsumerFactory.CreateConsumer();

            internalConsumers.Add(internalConsumer);

            internalConsumer.Cancelled += consumer => Dispose();

            var status = internalConsumer.StartConsuming(
                queue,
                onMessage,
                configuration
                );

            if (status == StartConsumingStatus.Succeed)
            {
                eventBus.Publish(new StartConsumingSucceededEvent(this, queue));
            }
            else
            {
                eventBus.Publish(new StartConsumingFailedEvent(this, queue));
            }
        }
Exemple #5
0
        public Given_a_PersistentConsumer()
        {
            eventBus          = new EventBus();
            internalConsumers = new List <IInternalConsumer>();

            createConsumerCalled = 0;
            mockBuilder          = new MockBuilder();

            queue     = new Queue(queueName, false);
            onMessage = (body, properties, info) => Task.Factory.StartNew(() => { });

            persistentConnection    = Substitute.For <IPersistentConnection>();
            internalConsumerFactory = Substitute.For <IInternalConsumerFactory>();

            internalConsumerFactory.CreateConsumer().Returns(x =>
            {
                var internalConsumer = Substitute.For <IInternalConsumer>();
                internalConsumers.Add(internalConsumer);
                createConsumerCalled++;
                return(internalConsumer);
            });
            configuration = new ConsumerConfiguration(0);
            consumer      = new PersistentConsumer(
                queue,
                onMessage,
                persistentConnection,
                configuration,
                internalConsumerFactory,
                eventBus);

            AdditionalSetup();
        }
        private void StartConsumingInternal()
        {
            if (disposed)
            {
                return;
            }

            if (!connection.IsConnected)
            {
                // connection is not connected, so just ignore this call. A consumer will
                // be created and start consuming when the connection reconnects.
                return;
            }

            var internalConsumer = internalConsumerFactory.CreateConsumer();

            internalConsumers.TryAdd(internalConsumer, null);

            internalConsumer.Cancelled += consumer =>
            {
//                    Console.Out.WriteLine(">>>>>>>> internalConsumer.Cancelled");
//                    if (disposed) return;
//
//                    object value; // cruft from using a ConcurrentDictionary
//                    internalConsumers.TryRemove(consumer, out value);
//                    StartConsumingInternal();
            };

            internalConsumer.StartConsuming(
                connection,
                queue,
                onMessage);
        }
Exemple #7
0
        private void StartConsumingInternal()
        {
            if (disposed)
            {
                return;
            }
            if (!connection.IsConnected)
            {
                return;
            }

            lock (syncLock)
            {
                if (isStarted)
                {
                    return;
                }

                var internalConsumer = internalConsumerFactory.CreateConsumer();
                internalConsumers.TryAdd(internalConsumer, null);
                internalConsumer.Cancelled += consumer => Dispose();
                var status = internalConsumer.StartConsuming(connection, queue, onMessage, configuration);
                if (status == StartConsumingStatus.Succeed)
                {
                    isStarted = true;
                    eventBus.Publish(new StartConsumingSucceededEvent(this, queue));
                }
                else
                {
                    internalConsumer.Dispose();
                    internalConsumers.TryRemove(internalConsumer, out _);
                    eventBus.Publish(new StartConsumingFailedEvent(this, queue));
                }
            }
        }
        private void StartConsumingInternal()
        {
            if (disposed)
            {
                return;
            }

            if (!connection.IsConnected)
            {
                // connection is not connected, so just ignore this call. A consumer will
                // be created and start consuming when the connection reconnects.
                return;
            }

            var internalConsumer = internalConsumerFactory.CreateConsumer();

            internalConsumers.TryAdd(internalConsumer, null);

            internalConsumer.Cancelled += consumer => Dispose();

            var status = internalConsumer.StartConsuming(
                connection,
                queue,
                onMessage,
                configuration);

            if (status == StartConsumingStatus.Succeed)
            {
                eventBus.Publish(new StartConsumingSucceededEvent(this, queue));
            }
            else
            {
                eventBus.Publish(new StartConsumingFailedEvent(this, queue));
            }
        }
Exemple #9
0
        public IDisposable StartConsuming()
        {
            internalConsumer = internalConsumerFactory.CreateConsumer();

            internalConsumer.Cancelled += consumer => Dispose();

            var status = internalConsumer.StartConsuming(
                connection,
                queue,
                onMessage,
                configuration
                );

            if (status == StartConsumingStatus.Succeed)
            {
                eventBus.Publish(new StartConsumingSucceededEvent(this, queue));
            }
            else
            {
                eventBus.Publish(new StartConsumingFailedEvent(this, queue));
            }

            consumerCancellation = new ConsumerCancellation(Dispose);
            return(consumerCancellation);
        }
        public void StartConsuming()
        {
            internalConsumer = internalConsumerFactory.CreateConsumer();

            internalConsumer.Cancelled += consumer => OnRemoveMeFromList();

            internalConsumer.StartConsuming(
                connection,
                queue,
                onMessage);
        }
Exemple #11
0
        public IDisposable StartConsuming()
        {
            internalConsumer = internalConsumerFactory.CreateConsumer();

            internalConsumer.Cancelled += consumer => Dispose();

            internalConsumer.StartConsuming(
                connection,
                queue,
                onMessage);

            return(new ConsumerCancellation(Dispose));
        }
        public void StartConsuming()
        {
            internalConsumer = internalConsumerFactory.CreateConsumer();

            internalConsumer.Cancelled += consumer => OnRemoveMeFromList();

            internalConsumer.AckOrNackWasSent += context =>
            {
                OnRemoveMeFromList();
                Dispose();
            };

            internalConsumer.StartConsuming(
                connection,
                queue,
                onMessage);
        }
        private void StartConsumingInternal()
        {
            if (disposed)
            {
                return;
            }

            if (!connection.IsConnected)
            {
                return;
            }

            var internalConsumer = internalConsumerFactory.CreateConsumer();

            internalConsumers.Add(internalConsumer);

            internalConsumer.Cancelled += consumer => Dispose();

            internalConsumer.StartConsuming(
                queueConsumerPairs,
                configuration
                );
        }