Пример #1
0
        static void Main(string[] args)
        {
            var sourceTopic = "AppInsightsExample.Source";

            var secrets = new ConfigurationBuilder()
                          .AddUserSecrets <Program>()
                          .Build();

            TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();

            configuration.InstrumentationKey = secrets["ApplicationInsights:InstrumentationKey"].ToString();

            var telemetryClient = new TelemetryClient(configuration);

            var stream = new NetStreamBuilder <Null, MyMessage>(
                cfg =>
            {
                cfg.BootstrapServers = "localhost:9092";
                cfg.ConsumerGroup    = "AppInsightsExample.Consumer";
                cfg.AddTopicConfiguration(cfg =>
                {
                    cfg.Name = sourceTopic;
                });
                cfg.ConfigureLogging(log =>
                {
                    log.UseConsole();
                });

                cfg.UseApplicationInsights(telemetryClient);
            })
                         .Stream(sourceTopic)
                         .Filter(context => context.Message.Value % 3 == 0)
                         .Handle(context => Console.WriteLine($"Handling message value={context.Message.Value}"))
                         .Build()
                         .StartAsync(new CancellationToken());

            IProducer <Null, MyMessage> producer = new ProducerBuilder <Null, MyMessage>(new ProducerConfig()
            {
                BootstrapServers = "localhost:9092"
            })
                                                   .SetValueSerializer(new HeaderSerializationStrategy <MyMessage>())
                                                   .Build();

            for (int i = 0; i < 100; i++)
            {
                var message = new MyMessage()
                {
                    Value = i
                };
                producer.ProduceAsync(sourceTopic, new Message <Null, MyMessage> {
                    Value = message
                });
            }

            Task.WaitAll(stream);
        }
Пример #2
0
        static void Main(string[] args)
        {
            var sourceTopic = "Order.Commands";
            var mediator    = BuildMediator();

            var builder = new NetStreamBuilder(
                cfg =>
            {
                cfg.BootstrapServers = "localhost:9092";
                cfg.ConsumerGroup    = "Orders.Consumer";
                cfg.AddTopicConfiguration(cfg =>
                {
                    cfg.Name       = "Order.Commands";
                    cfg.Partitions = 2;
                });
                cfg.AddTopicConfiguration(cfg =>
                {
                    cfg.Name       = "Order.Events";
                    cfg.Partitions = 2;
                });
            });

            var startTask =
                builder.Stream <string, OrderCommand>(sourceTopic)
                .Handle <string, OrderEvent>(context => (OrderEvent)mediator.Send(context.Message).Result)
                .ToTopic("Order.Events", message => message.Key)
                .StartAsync(CancellationToken.None);

            var producer = new ProducerBuilder <string, OrderCommand>(
                new ProducerConfig()
            {
                BootstrapServers = "localhost:9092"
            })
                           .SetValueSerializer(new HeaderSerializationStrategy <OrderCommand>())
                           .Build();

            var messageProducer = new NetStreamProducer <string, OrderCommand>(producer);

            for (int i = 0; i < 100; i++)
            {
                var message = new PlaceOrder()
                {
                    CustomerId       = Guid.NewGuid().ToString(),
                    OrderDescription = $"{(i % 6) + 1} widgets"
                };

                messageProducer.ProduceAsync(sourceTopic, message.Key, message).Wait();
            }

            Task.WaitAll(startTask);
        }
Пример #3
0
        static void Main(string[] args)
        {
            var sourceTopic = "Logging.Source";

            var logger = new LoggerConfiguration()
                         .MinimumLevel.Debug()
                         .WriteTo.Console()
                         .CreateLogger();

            var builder = new NetStreamBuilder <Null, MyMessage>(
                cfg =>
            {
                cfg.BootstrapServers = "localhost:9092";
                cfg.ConsumerGroup    = "Logging.Consumer";
                cfg.AddTopicConfiguration(cfg =>
                {
                    cfg.Name = sourceTopic;
                });

                cfg.ConfigureLogging(logging =>
                {
                    logging.UseSerilog(logger);
                });
            });

            var startTask = builder.Stream(sourceTopic)
                            .Filter(context => context.Message.Value % 3 == 0)
                            .Handle(context => Console.WriteLine($"Handling message value={context.Message.Value}"))
                            .Build()
                            .StartAsync(new CancellationToken());

            IProducer <Null, MyMessage> producer = new ProducerBuilder <Null, MyMessage>(new ProducerConfig()
            {
                BootstrapServers = "localhost:9092"
            })
                                                   .SetValueSerializer(new HeaderSerializationStrategy <MyMessage>())
                                                   .Build();

            for (int i = 0; i < 100; i++)
            {
                var message = new MyMessage()
                {
                    Value = i
                };
                producer.ProduceAsync(sourceTopic, new Message <Null, MyMessage> {
                    Value = message
                });
            }

            Task.WaitAll(startTask);
        }
Пример #4
0
        static void Main(string[] args)
        {
            var sourceTopic = "BasicStream.Source";

            var builder = new NetStreamBuilder <Null, MyMessage>(
                cfg =>
            {
                cfg.UseAuthentication(new PlainTextAuthentication());
                //cfg.UseAuthentication(new SslAuthentication("sslCaCertPath", "sslClientCertPath", "sslClientKeyPath", "sslClientKeyPwd"));
                //cfg.UseAuthentication(new SaslScram256Authentication("username", "password", "sslCaCertPath"));
                //cfg.UseAuthentication(new SaslScram512Authentication("username", "password", "sslCaCertPath"));
                cfg.BootstrapServers = "localhost:9092";
                cfg.ConsumerGroup    = "BasicStream.Consumer";
                cfg.AddTopicConfiguration(cfg =>
                {
                    cfg.Name = sourceTopic;
                });
            });

            var startTask = builder.Stream(sourceTopic)
                            .Filter(context => context.Message.Value % 3 == 0)
                            .Handle(context => Console.WriteLine($"Handling message value={context.Message.Value}"))
                            .Build()
                            .StartAsync(new CancellationToken());



            IProducer <Null, MyMessage> producer = new ProducerBuilder <Null, MyMessage>(new ProducerConfig()
            {
                BootstrapServers = "localhost:9092"
            })
                                                   .SetValueSerializer(new HeaderSerializationStrategy <MyMessage>())
                                                   .Build();

            for (int i = 0; i < 100; i++)
            {
                var message = new MyMessage()
                {
                    Value = i
                };
                producer.ProduceAsync(sourceTopic, new Message <Null, MyMessage> {
                    Value = message
                });
            }

            Task.WaitAll(startTask);
        }