public static void Handle(XTask task) { var ms = (DateTime.UtcNow - task.Timestamp).TotalMilliseconds; Log.Info($"Got {task.Name} Latency: {ms} ms."); Meter.Mark(); Histogram.Update((long) ms); }
public static XTask[] GenerateTasks(int count) { var tasks = new XTask[count]; for (int i = 0; i < count; i++) { var description = new char[TaskSize]; for (int j = 0; j < TaskSize; j++) description[j] = Alphabet[Random.Next(Alphabet.Length)]; tasks[i] = new XTask { Description = new string(description) }; lock (TaskNumberLock) { tasks[i].Name = $"Task #{TaskNumber++}"; } } for (int i = 0; i < count; i++) tasks[i].Timestamp = DateTime.UtcNow; return tasks; }
public static void Publish(XTask[] tasks) { Thread.Sleep(10); var contentType = "application/vnd.kafka.json.v1+json"; var accept = "application/vnd.kafka.v1+json, application/vnd.kafka+json, application/json"; var data = JsonConvert.SerializeObject(new { records = tasks.Select(x => new { value = x }) }); try { WebRequestHelper.Post(Config.HostName, $"topics/{Config.TopicName}", data, contentType, accept); } catch (Exception e) { Log.Error(e.Message); } }