public HttpResponseMessage Post([FromBody] JObject loadTime) { var clientSettings = new MessageBusClient(); var router = clientSettings.GetClientRouter(); var page = new PageModel { Id = Guid.NewGuid().ToString("N"), Key = Guid.NewGuid().ToString("N"), Source = new Dictionary<string, string> { {"Request.ApplicationPath", HttpContext.Current.Request.ApplicationPath}, {"Request.PhysicalApplicationPath", HttpContext.Current.Request.PhysicalApplicationPath}, {"Request.PhysicalPath", HttpContext.Current.Request.PhysicalPath}, }, Metric = new MetricModel { Key = MetricType.LoadTime.ToString(), Value = loadTime.ToString() }, Time = DateTime.UtcNow }; Task.Factory.StartNew(() => { var producerusingClient = new JsonProducer(router); // todo: topics need to be maintained dynamically // todo: we are not specifying the partition producerusingClient.Publish("PageLoadTime", new List<PageModel> { page }); }); return new HttpResponseMessage(HttpStatusCode.Created); }
static void Main(string[] args) { var redisUri = ConfigurationManager.AppSettings["Redis_Server_Uri"]; IRedisClientsManager clientManger = new PooledRedisClientManager(redisUri); PageRepository pageRepository = new PageRepository(clientManger.GetClient()); // bin\windows\zookeeper-server-start.bat config\zookeeper.properties // bin\windows\kafka-server-start.bat config\server.properties // bin\windows\kafka-console-consumer.bat --zookeeper localhost:2181 --topic PageLoadTime --from-beginning // kafka-console-producer.bat --broker-list localhost:9092 --topic PageLoadTime //// CONSUMER READING OFF THE QUEUE //var options = new KafkaOptions(new Uri("http://localhost:9092")); //var router = new BrokerRouter(options); //var redisClient = new RedisClient("127.0.0.1:6379"); //var db = redisClient.Instance(1); //var consumer = new Consumer(new ConsumerOptions("PageLoadTime", router)); //var allData = consumer.Consume(); //Task.Factory.StartNew(() => // { // int i = 0; // foreach (var data in allData) // { // if (string.IsNullOrEmpty(data.Key)) // { // continue; // } // Console.ForegroundColor = ConsoleColor.Green; // Console.WriteLine(string.Format("Reading {0} message => {1}", i, data.Value)); // Console.ForegroundColor = ConsoleColor.Yellow; // Console.WriteLine("----------------------------------------------------------"); // db.StringSetAsync(data.Key, data.Value.ToString(CultureInfo.InvariantCulture)); // i++; // } // }); var redisData = pageRepository.GetAll(); DisplayAll(redisData); // CONSUMER READING OFF THE QUEUE + REDIS var clientSettings = new MessageBusClient(); var router = clientSettings.GetClientRouter(); var consumer = new JsonConsumer<PageModel>(new ConsumerOptions("PageLoadTime", router)); var allData = consumer.Consume(); Task.Factory.StartNew(() => { foreach (var data in allData) { if (string.IsNullOrEmpty(data.Value.Key)) { continue; } var page = pageRepository.Store(data.Value); DisplaySingle(page); } }); Console.ReadKey(); }