public static void SendData(string serviceBusConnectionString, string entryHubName, string exitHubName) { var entryEventHub = EventHubClient.CreateFromConnectionString(serviceBusConnectionString, entryHubName); var exitEventHub = EventHubClient.CreateFromConnectionString(serviceBusConnectionString, exitHubName); var timerInterval = TimeSpan.FromSeconds(1); var generator = TollDataGenerator.Generator(); TimerCallback timerCallback = state => { var startTime = DateTime.UtcNow; generator.Next(startTime, timerInterval, 5); foreach (var e in generator.GetEvents(startTime)) { if (e is EntryEvent) { entryEventHub.Send( new EventData(Encoding.UTF8.GetBytes(e.Format())) { PartitionKey = e.TollId.ToString(CultureInfo.InvariantCulture) }); } else { exitEventHub.Send( new EventData(Encoding.UTF8.GetBytes(e.Format())) { PartitionKey = e.TollId.ToString(CultureInfo.InvariantCulture) }); } } timer.Change((int)timerInterval.TotalMilliseconds, Timeout.Infinite); }; timer = new Timer(timerCallback, null, Timeout.Infinite, Timeout.Infinite); timer.Change(0, Timeout.Infinite); Console.WriteLine("Sending event hub data... Press Ctrl+c to stop."); var exitEvent = new ManualResetEvent(false); Console.CancelKeyPress += (sender, eventArgs) => { Console.WriteLine("Stopping..."); eventArgs.Cancel = true; exitEvent.Set(); }; exitEvent.WaitOne(); Console.WriteLine("Shutting down all resources..."); timer.Change(Timeout.Infinite, Timeout.Infinite); Thread.Sleep(timerInterval); timer.Dispose(); entryEventHub.Close(); exitEventHub.Close(); Console.WriteLine("Stopped."); }
public static void SendData(TextWriter log) { _log = log; var commercialVehicleRegistration = AzureResourcesCreator.CreateBlob(); AzureResourcesCreator.CreateAzureCosmosDb(); var eventHubSender = new EventHubSender(); try { // generate data var generator = TollDataGenerator.Generator(commercialVehicleRegistration); _timerInterval = TimeSpan.FromSeconds(Convert.ToDouble(CloudConfiguration.TimerInterval)); TimerCallback timerCallback = state => { var startTime = DateTime.UtcNow; generator.Next(startTime, _timerInterval, 5); foreach (var tollEvent in generator.GetEvents(startTime)) { eventHubSender.SendData(tollEvent); ++_eventCount; } _timer.Change((int)_timerInterval.TotalMilliseconds, Timeout.Infinite); }; Timer timer = new Timer(Callback, null, TimeSpan.FromSeconds(60), TimeSpan.FromSeconds(60)); _timer = new Timer(timerCallback, null, Timeout.Infinite, Timeout.Infinite); _timer.Change(0, Timeout.Infinite); _log.WriteLine("Sending event hub data"); } catch (Exception exception) { Console.Error.WriteLine(exception.ToString()); } finally { var exitEvent = new ManualResetEvent(false); Console.CancelKeyPress += (sender, eventArgs) => { Console.WriteLine("Stopping..."); eventArgs.Cancel = true; exitEvent.Set(); }; exitEvent.WaitOne(); _timer.Change(Timeout.Infinite, Timeout.Infinite); Thread.Sleep(_timerInterval); _timer.Dispose(); eventHubSender.DisposeSender(); } }