Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            Console.Title = "Producer";
            RabbitMqConfig config = new RabbitMqConfig();

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

            ProducerFactory factory  = new ProducerFactory(config);
            var             producer = factory.CreateProducer("Producer1");

            Console.WriteLine("准备就绪");
            Console.WriteLine("请输入要发送的消息,格式: Topic,Message。按 Q 退出");
            while (true)
            {
                var input = Console.ReadLine();
                if ("Q".Equals(input, StringComparison.OrdinalIgnoreCase))
                {
                    break;
                }
                var array = input.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                if (array.Length != 2)
                {
                    Console.WriteLine("消息格式错误,请重新输入");
                    continue;
                }
                producer.Publish(array[0], Guid.NewGuid().ToString("N"), array[1]);
            }
        }
Ejemplo n.º 2
0
        private static void StartProducing(ILogger logger, IConfiguration config, SchemaRegistryConfig schemaRegistryConfig)
        {
            var cachedSchemaRegistryClient = new CachedSchemaRegistryClient(schemaRegistryConfig);
            var producerFactory            = new ProducerFactory <string, Record>(
                logger,
                new ProtobufSerializer <Record>(cachedSchemaRegistryClient),
                KafkaOptions.ForProducer(config));

            var kafkaProducer = producerFactory.CreateProducer();

            for (int i = 0; i < 10; i++)
            {
                var person = new Person
                {
                    Id          = i,
                    Name        = $"{nameof(Person.Name)} {i}",
                    Email       = $"{nameof(Person.Email)} {i}",
                    Age         = 20 + i,
                    PhoneNumber = $"{nameof(Person.PhoneNumber)} {i}"
                };

                var address = new Address
                {
                    PersonId = i,
                    State    = $"{nameof(Address.State)} {i}",
                    Street   = $"{nameof(Address.Street)} {i}",
                    ZipCode  = $"{nameof(Address.ZipCode)} {i}",
                };

                var personRecord = new Record {
                    CreatedDate = Timestamp.FromDateTime(DateTime.UtcNow), Id = Guid.NewGuid().ToString(), Payload = Any.Pack(person)
                };
                var addressRecord = new Record {
                    CreatedDate = Timestamp.FromDateTime(DateTime.UtcNow), Id = Guid.NewGuid().ToString(), Payload = Any.Pack(address)
                };

                var personMessage = new Confluent.Kafka.Message <string, Record>
                {
                    Key   = Guid.NewGuid().ToString(),
                    Value = personRecord
                };

                var addressMessage = new Message <string, Record>
                {
                    Key   = Guid.NewGuid().ToString(),
                    Value = addressRecord
                };

                logger.Information(
                    "Sending message => Topic: {Topic} Key: {Key} Value: {Value}",
                    PERSON_TOPIC,
                    personMessage.Key,
                    personMessage.Value);

                kafkaProducer.ProduceAsync(PERSON_TOPIC, personMessage)
                .GetAwaiter()
                .GetResult();

                logger.Information(
                    "Sending message => Topic: {Topic} Key: {Key} Value: {Value}",
                    PERSON_TOPIC,
                    addressMessage.Key,
                    addressMessage.Value);

                kafkaProducer.ProduceAsync(PERSON_TOPIC, addressMessage)
                .GetAwaiter()
                .GetResult();
            }
        }
Ejemplo n.º 3
0
        private static void StartProducing(ILogger logger, IConfiguration config)
        {
            var producerFactory = new ProducerFactory <string, Record>(
                logger,
                new StringSerializer <Record>(e => Encode.FromString(JsonConvert.SerializeObject(e))),
                KafkaOptions.ForProducer(config));

            var kafkaProducer = producerFactory.CreateProducer();

            for (int i = 0; i < 10; i++)
            {
                var person = new Person
                {
                    Id          = i,
                    Name        = $"{nameof(Person.Name)} {i}",
                    Email       = $"{nameof(Person.Email)} {i}",
                    Age         = 20 + i,
                    PhoneNumber = $"{nameof(Person.PhoneNumber)} {i}"
                };

                var address = new Address
                {
                    PersonId = i,
                    State    = $"{nameof(Address.State)} {i}",
                    Street   = $"{nameof(Address.Street)} {i}",
                    ZipCode  = $"{nameof(Address.ZipCode)} {i}",
                };

                var personRecord  = Record.Create(person, typeof(Person));
                var addressRecord = Record.Create(address, typeof(Address));

                var personMessage = new Message <string, Record>
                {
                    Key   = person.Id.ToString(),
                    Value = personRecord
                };

                var addressMessage = new Message <string, Record>
                {
                    Key   = person.Id.ToString(),
                    Value = addressRecord
                };

                logger.Information(
                    "Sending message => Topic: {Topic} Key: {Key} Value: {Value}",
                    PERSON_TOPIC,
                    personMessage.Key,
                    personMessage.Value);

                kafkaProducer.ProduceAsync(PERSON_TOPIC, personMessage)
                .GetAwaiter()
                .GetResult();


                logger.Information(
                    "Sending message => Topic: {Topic} Key: {Key} Value: {Value}",
                    PERSON_TOPIC,
                    addressMessage.Key,
                    addressMessage.Value);

                kafkaProducer.ProduceAsync(PERSON_TOPIC, addressMessage)
                .GetAwaiter()
                .GetResult();
            }
        }