示例#1
0
文件: Program.cs 项目: texyh/kafka
        static void Main(string[] args)
        {
            var(logger, config) = Bootstrap();

            var schemaRegistryConfig = new SchemaRegistryConfig
            {
                Url = config["SCHEMA_REGISTRY_URL"],
            };

            StartProducing(logger, config, schemaRegistryConfig);

            var consumerFactory = new ConsumerFactory <string, Record>(
                logger,
                new ProtobufDeserializer <Record>(),
                KafkaOptions.ForConsumer(config));

            var consumer            = consumerFactory.CreateConsumer("Group-1");
            var consumer2           = consumerFactory.CreateConsumer("Group-2");
            var eventListener       = new EventListener(consumer, PERSON_TOPIC, logger);
            var eventListener2      = new EventListener(consumer2, PERSON_TOPIC, logger);
            var personEventHandler  = new PersonEventHandler();
            var addressEventHandler = new AddressEventHandler();
            var handlers            = new List <IEventHandler> {
                personEventHandler, addressEventHandler
            };
            var eventProcessor  = new EventProcessor(eventListener, handlers, logger);
            var eventProcessor2 = new EventProcessor(eventListener2, handlers, logger);

            eventProcessor.StartProcessing(CreateCancellation().Token).GetAwaiter().GetResult();
            eventProcessor2.StartProcessing(CreateCancellation().Token).GetAwaiter().GetResult();
        }
示例#2
0
        static void Main(string[] args)
        {
            Console.Title = "Consumer";
            RabbitMqConfig config = new RabbitMqConfig();

            config.ExchangeName = "test";
            config.HostName     = "localhost";
            config.Password     = "******";
            config.UserName     = "******";
            config.VirtualHost  = "/";

            ConsumerFactory factory  = new ConsumerFactory(config);
            var             consumer = factory.CreateConsumer("ConsumerId1", true);

            consumer.MessageReceive += (sender, e) =>
            {
                Console.WriteLine($"{sender.ConsumerId}收到消息,Topic:{e.Topic}:Key:{e.Key},Content:{e.Content}");
                e.Result = ConsumeResult.Success;
            };

            Console.WriteLine("请输入要订阅的Topic");
            var input = Console.ReadLine();

            consumer.Subscribe(input);

            Console.ReadKey();
        }
        public void ConsumerFactory_CanCreateConsumer()
        {
            IConsumerFactory factory = new ConsumerFactory(options);

            IConsumer consumer = factory.CreateConsumer();
            Assert.IsNotNull(consumer);
            Assert.AreEqual(factory.ConsumerOptions, consumer.ConsumerOptions);
        }
示例#4
0
        public void Start()
        {
            var factory = ClientConnectionFactory.CreateConnection("localhost");

            this.channel = factory.CreateModel();

            channel.QueueDeclare("HostQueue", true, false, false, null);
            consumer = ConsumerFactory.CreateConsumer(channel, "HostQueue", Consumer_Received);
        }
        public virtual void Subscribe(IQueue queue, Func <Byte[], MessageProperties, MessageReceivedInfo, Task> onMessage)
        {
            Preconditions.CheckNotNull(queue, "queue");
            Preconditions.CheckNotNull(onMessage, "onMessage");

            if (disposed)
            {
                throw new Exception("This bus has been disposed");
            }

            var subscriptionAction = new SubscriptionAction(queue.IsSingleUse);

            subscriptionAction.Action = () =>
            {
                var channel = PersistentConnection.CreateModel();
                channel.ModelShutdown += (model, reason) => Logger.Debug(string.Format("Model Shutdown for queue: '{0}'", queue.Name));

                queue.Visit(new TopologyBuilder(channel));

                //channel.BasicQos(0, connectionConfiguration.PrefetchCount, false);
                channel.BasicQos(0, 50, false);

                var consumer = ConsumerFactory.CreateConsumer(subscriptionAction, channel, queue.IsSingleUse,
                                                              (consumerTag, deliveryTag, redelivered, exchange, routingKey, properties, body) =>
                {
                    var messageRecievedInfo = new MessageReceivedInfo
                    {
                        ConsumerTag = consumerTag,
                        DeliverTag  = deliveryTag,
                        Redelivered = redelivered,
                        Exchange    = exchange,
                        RoutingKey  = routingKey
                    };
                    MessageProperties messageProperties = new MessageProperties();
                    properties.CopyTo(messageProperties);
                    return(onMessage(body, messageProperties, messageRecievedInfo));
                });

                channel.BasicConsume(
                    queue.Name,             // queue
                    NoAck,                  // noAck
                    consumer.ConsumerTag,   // consumerTag
                    consumer);              // consumer

                Logger.Debug(string.Format("Declared Consumer. queue='{0}', prefetchcount={1}",
                                           queue.Name,
                                           _connectionConfiguration.PrefetchCount));
            };

            AddSubscriptionAction(subscriptionAction);
        }
示例#6
0
        static void Main(string[] args)
        {
            SetupContainer();
            EnsureResourcesExists();

            var consumerFactory = new ConsumerFactory(ConnectionString, DependencyResolver);

            var consumerProperties1 = ConsumerProperties.ForMultipleConsumers(TopicPath, SubscName, 2);
            var consumer1           = consumerFactory.CreateConsumer <CustomService1, CustomMessage>(consumerProperties1);

            consumer1.Start();

            Console.WriteLine("Press any key to stop the app...");
            Console.Read();

            consumer1.Stop();
        }
示例#7
0
        static void Main(string[] args)
        {
            var(logger, config) = Bootstrap();

            StartProducing(logger, config);

            var consumerFactory = new ConsumerFactory <string, Record>(
                logger,
                new StringDeserializer <Record>(x => JsonConvert.DeserializeObject <Record>(Decode.IntoString(x))),
                KafkaOptions.ForConsumer(config));

            var consumer            = consumerFactory.CreateConsumer("Group-1");
            var eventListener       = new EventListener(consumer, PERSON_TOPIC, logger);
            var personEventHandler  = new PersonEventHandler();
            var addressEventHandler = new AddressEventHandler();
            var eventProcessor      = new EventProcessor(eventListener, new List <IEventHandler> {
                personEventHandler, addressEventHandler
            }, logger);

            eventProcessor.StartProcessing(CreateCancellation().Token).GetAwaiter().GetResult();
        }