public CounterKafkaService(CafeDatabaseSettings cafeDatabaseSettings, CafeKafkaSettings cafeKafkaSettings)
        {
            try
            {
                _consumerConfig = KafkaConfig.CreateConsumerConfig(cafeKafkaSettings);

                _producerConfig = KafkaConfig.CreateProducerConfig(cafeKafkaSettings);

                Console.WriteLine(DateTime.Now + " - Read Kafka Bootstrap: " + cafeKafkaSettings.BootstrapServers);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception in kafka settings: " + ex);
            }

            try
            {
                var client   = new MongoClient(cafeDatabaseSettings.ConnectionString);
                var database = client.GetDatabase(cafeDatabaseSettings.DatabaseName);
                _orderRepository = database.GetCollection <Order>(cafeDatabaseSettings.OrdersCollectionName);

                Console.WriteLine(DateTime.Now + " - Read MongoDB Connection String: " + cafeDatabaseSettings.ConnectionString);
                Console.WriteLine(DateTime.Now + " - Read MongoDB DB Name: " + cafeDatabaseSettings.DatabaseName);
                Console.WriteLine(DateTime.Now + " - Read MongoDB Collection Name: " + cafeDatabaseSettings.OrdersCollectionName);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception in mongodb settings: " + ex);
            }
        }
示例#2
0
        public InventoryKafkaService(CafeKafkaSettings cafeKafkaSettings)
        {
            _stockRoom = new StockRoom();
            try
            {
                _consumerConfig = new ConsumerConfig()
                {
                    GroupId               = cafeKafkaSettings.GroupId,
                    BootstrapServers      = cafeKafkaSettings.BootstrapServers,
                    AutoOffsetReset       = AutoOffsetReset.Earliest,
                    SocketKeepaliveEnable = true,
                    AllowAutoCreateTopics = true
                };

                _producerConfig = new ProducerConfig()
                {
                    BootstrapServers = cafeKafkaSettings.BootstrapServers
                };

                Console.WriteLine("Read Kafka Bootstrap: " + cafeKafkaSettings.BootstrapServers);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception in kafka settings: " + ex);
            }
        }
        public KitchenKafkaService(CafeKafkaSettings cafeKafkaSettings)
        {
            _kitchen = new Kitchen();
            try
            {
                _consumerConfig = KafkaConfig.CreateConsumerConfig(cafeKafkaSettings);

                _producerConfig = KafkaConfig.CreateProducerConfig(cafeKafkaSettings);

                Console.WriteLine(DateTime.Now + " - Read Kafka Bootstrap: " + cafeKafkaSettings.BootstrapServers);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception in kafka settings: " + ex);
            }
        }
        public InventoryKafkaService(CafeKafkaSettings cafeKafkaSettings)
        {
            _stockRoom = new StockRoom();
            try
            {
                _consumerConfig = KafkaConfig.CreateConsumerConfig(cafeKafkaSettings);

                _producerConfig = KafkaConfig.CreateProducerConfig(cafeKafkaSettings);

                Console.WriteLine("Read Kafka Bootstrap: " + cafeKafkaSettings.BootstrapServers);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception in kafka settings: " + ex);
            }
        }
示例#5
0
        public BaristaKafkaService(CafeKafkaSettings cafeKafkaSettings)
        {
            _barista = new Barista();
            try
            {
                _consumerConfig = KafkaConfig.CreateConsumerConfig(cafeKafkaSettings);

                _producerConfig = KafkaConfig.CreateProducerConfig(cafeKafkaSettings);

                Console.WriteLine("Read Kafka Bootstrap: " + cafeKafkaSettings.BootstrapServers);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception in kafka settings: " + ex);
            }
        }
        public async Task Get(CancellationToken cancellationToken)
        {
            var response = Response;

            response.StatusCode = 200;
            response.Headers.Add("Content-Type", "text/event-stream");
            response.Headers.Add("Cache-Control", "no-cache");
            response.Headers.Add("Connection", "keep-alive");

            String kafkaBootstrap    = Environment.GetEnvironmentVariable("DOTNET_CAFE_KAFKA_BOOTSTRAP") ?? "127.0.0.1:9099";
            var    cafeKafkaSettings = new CafeKafkaSettings(kafkaBootstrap);
            var    consumerConfig    = new ConsumerConfig()
            {
                GroupId               = cafeKafkaSettings.GroupId,
                BootstrapServers      = cafeKafkaSettings.BootstrapServers,
                AutoOffsetReset       = AutoOffsetReset.Earliest,
                SocketKeepaliveEnable = true,
                AllowAutoCreateTopics = true
            };


            Task.Run(() => { ConsumeKafka(consumerConfig, cancellationToken); });

            await response.Body.FlushAsync();

            while (!cancellationToken.IsCancellationRequested)
            {
                while (queue.TryDequeue(out var message))
                {
                    OrderUpEvent    item            = JsonSerializer.Deserialize <OrderUpEvent>(message);
                    DashboardUpdate dashboardUpdate = new DashboardUpdate(item);

                    var serializerOptions = new JsonSerializerOptions
                    {
                        Converters       = { new JsonStringEnumConverter() },
                        IgnoreNullValues = true
                    };

                    String dashboardUpdateJson = JsonSerializer.Serialize(dashboardUpdate, serializerOptions);
                    await response.WriteAsync($"data:{dashboardUpdateJson} \n\n");

                    await response.Body.FlushAsync();
                }

                await Task.Delay(1 * 1000);
            }
        }
        public CounterKafkaService(CafeDatabaseSettings cafeDatabaseSettings, CafeKafkaSettings cafeKafkaSettings)
        {
            try
            {
                _consumerConfig = new ConsumerConfig()
                {
                    GroupId               = cafeKafkaSettings.GroupId,
                    BootstrapServers      = cafeKafkaSettings.BootstrapServers,
                    AutoOffsetReset       = AutoOffsetReset.Earliest,
                    SocketKeepaliveEnable = true,
                    AllowAutoCreateTopics = true
                };

                _producerConfig = new ProducerConfig()
                {
                    BootstrapServers = cafeKafkaSettings.BootstrapServers
                };

                Console.WriteLine("Read Kafka Bootstrap: " + cafeKafkaSettings.BootstrapServers);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception in kafka settings: " + ex);
            }

            try
            {
                var client   = new MongoClient(cafeDatabaseSettings.ConnectionString);
                var database = client.GetDatabase(cafeDatabaseSettings.DatabaseName);
                _orderRepository = database.GetCollection <Order>(cafeDatabaseSettings.OrdersCollectionName);

                Console.WriteLine("Read MongoDB Connection String: " + cafeDatabaseSettings.ConnectionString);
                Console.WriteLine("Read MongoDB DB Name: " + cafeDatabaseSettings.DatabaseName);
                Console.WriteLine("Read MongoDB Collection Name: " + cafeDatabaseSettings.OrdersCollectionName);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception in mongodb settings: " + ex);
            }
        }
        private async Task SendMessage(String json)
        {
            String kafkaBootstrap    = Environment.GetEnvironmentVariable("DOTNET_CAFE_KAFKA_BOOTSTRAP") ?? "127.0.0.1:9099";
            var    cafeKafkaSettings = new CafeKafkaSettings(kafkaBootstrap);
            var    producerConfig    = new ProducerConfig {
                BootstrapServers = cafeKafkaSettings.BootstrapServers
            };

            using (var p = new ProducerBuilder <Null, string>(producerConfig).Build())
            {
                try
                {
                    var dr = await p.ProduceAsync("web-in", new Message <Null, string> {
                        Value = json
                    });

                    Console.WriteLine($"Delivered '{dr.Value}' to '{dr.TopicPartitionOffset}'");
                }
                catch (ProduceException <Null, string> e)
                {
                    Console.WriteLine($"Delivery failed: {e.Error.Reason}");
                }
            }
        }