Exemplo n.º 1
0
        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.");
        }
Exemplo n.º 2
0
        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();
            }
        }