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); }
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); }
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); }
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); }