Example #1
0
        private static async Task CreateConsumer()
        {
            await Task.Run(() =>
            {
                var conf = new Dictionary <string, object>
                {
                    { "group.id", "balance-group" },
                    { "bootstrap.servers", "kafka1:9093,kafka2:9093" },
                    { "auto.offset.reset", "earliest" },
                    { "enable.auto.commit", "false" },
                };

                using (var consumer = new Consumer <Null, string>(conf, null, new StringDeserializer(Encoding.UTF8)))
                {
                    consumer.OnMessage += async(_, msg) =>
                    {
                        Console.WriteLine($"Value: {msg.Value}\r\nFrom partition: {msg.Partition}");

                        try
                        {
                            var def = new { type = "", data = new { ID = "" } };
                            var obj = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(msg.Value, def);

                            BalanceHelper.CreateBalanceAccount(int.Parse(obj.data.ID));

                            await consumer.CommitAsync(msg);
                        }
                        catch (Exception ex)
                        {
                            Console.Write($"message: {ex.Message}\r\n{ex.StackTrace}");
                        }
                    };

                    consumer.OnError += (_, error)
                                        => Console.WriteLine($"Error: {error}");

                    consumer.OnConsumeError += (_, msg)
                                               => Console.WriteLine($"Consume error ({msg.TopicPartitionOffset}): {msg.Error}");

                    consumer.Subscribe("userevent");

                    while (true)
                    {
                        consumer.Poll(TimeSpan.FromMilliseconds(100));
                    }
                }
            });
        }
Example #2
0
 public IActionResult CreateAccount(int user_id)
 {
     BalanceHelper.CreateBalanceAccount(user_id);
     return(Created("account", user_id));
 }