コード例 #1
0
        public async Task ListenAsync()
        {
            if (disposed)
            {
                throw new ObjectDisposedException(nameof(DefaultActiveConsumerProvider));
            }

            if (listenResult == null)
            {
                var listenOptions = new ListenOptions()
                {
                    FromQueue                 = activeConsumerOptions.FromQueue,
                    AutoAcknowledge           = activeConsumerOptions.AutoAcknowledge,
                    ClientId                  = activeConsumerOptions.ClientId,
                    Destination               = activeConsumerOptions.Destination,
                    Durable                   = activeConsumerOptions.Durable,
                    Interval                  = activeConsumerOptions.Interval,
                    PrefetchCount             = activeConsumerOptions.PrefetchCount,
                    RecoverWhenNotAcknowledge = activeConsumerOptions.RecoverWhenNotAcknowledge,
                    Selector                  = activeConsumerOptions.Selector,
                    SubscriberName            = activeConsumerOptions.SubscriberName
                };
                listenResult = await Consumer.ListenAsync(listenOptions, action);
            }
        }
コード例 #2
0
        public async Task ListenAsync()
        {
            if (disposed)
            {
                throw new ObjectDisposedException(nameof(DefaultKafkaConsumerProvider));
            }

            if (listenResult == null)
            {
                listenResult = await Consumer.ListenAsync(kafkaConsumerOptions.Subscribers, recieveResult =>
                {
                    onMessageRecieved.Invoke(recieveResult);
                });
            }
        }
コード例 #3
0
        public async Task ListenAsync()
        {
            if (disposed)
            {
                throw new ObjectDisposedException(nameof(DefaultRabbitConsumerProvider));
            }

            if (listenResult == null)
            {
                if (string.IsNullOrEmpty(exchange))
                {
                    listenResult = Consumer.Listen(queue, options =>
                    {
                        options.AutoDelete = rabbitConsumerOptions.AutoDelete;
                        options.Durable    = rabbitConsumerOptions.Durable;
                        options.AutoAck    = rabbitConsumerOptions.AutoAck;
                        options.Arguments  = rabbitConsumerOptions.Arguments;
                        options.FetchCount = rabbitConsumerOptions.FetchCount;
                    }, action);
                }
                else
                {
                    listenResult = Consumer.Listen(exchange, queue, options =>
                    {
                        options.AutoDelete  = rabbitConsumerOptions.AutoDelete;
                        options.Durable     = rabbitConsumerOptions.Durable;
                        options.AutoAck     = rabbitConsumerOptions.AutoAck;
                        options.Arguments   = rabbitConsumerOptions.Arguments;
                        options.FetchCount  = rabbitConsumerOptions.FetchCount;
                        options.Type        = rabbitConsumerOptions.Type;
                        options.RouteQueues = rabbitConsumerOptions.RouteQueues;
                    }, action);
                }
            }

            await Task.CompletedTask;
        }
コード例 #4
0
        private void listenForConnections(int port)
        {
            logger.Write <ConnectionListener>(InfoLevel.Trace, $"The new thread has started.");

            // Start TCP listener
            logger.Write <ConnectionListener>(InfoLevel.Trace, "Starting tcp listener.");
            tcpListener = new TcpListener(IPAddress.Parse("127.0.0.1"), port);
            tcpListener.Start();

            hasStartedListening = false;

            while (true)
            {
                logger.Write <ConnectionListener>(InfoLevel.Trace, $"Start of listening while loop for new connections.");
                Task <TcpClient> acceptTcpClientTask = Task.Run(() => tcpListener.AcceptTcpClient());

                logger.Write <ConnectionListener>(InfoLevel.Trace, $"_hasStartedListening={hasStartedListening}.");
                if (!hasStartedListening)
                {
                    hasStartedListening = true;
                    signalTcpListenerStarted();
                }

                // Wait for connections or stop
                ListenResult listenResult = waitForNextConnectionOrStopSignal(acceptTcpClientTask);
                if (listenResult == ListenResult.StopListening)
                {
                    break;
                }

                // Run OnClientConnected event
                logger.Write <ConnectionListener>(InfoLevel.Info, "Client connected.");
                OnClientConnected?.Invoke(acceptTcpClientTask.Result);
            }

            doneListeningForConnections.Set();
        }