private async Task MainAsync(string[] args) { var ehDefinition = new EventHubDefinition { ServiceNamespace = "windowsiot1", DeviceId = "windows10iot", EventHubName = "windowsiot1eventhub", ConnectionString = "Endpoint=sb://windowsiot1.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=gyj5SAwTzrVE3f1XFuT4uyC7bqB82hcPu61D/wx7kl8=" }; var telemetryProvider = new NativeTelemetryProvider(ehDefinition); var tempProvider = new SystemTemperature(); System.Console.Write("Ready, hit q to quit >"); var keepGoing = System.Console.ReadKey().Key != ConsoleKey.Q; var order = 0; while (keepGoing) { var result = await telemetryProvider.PostTelemetryAsync(ehDefinition, new DeviceTelemetry { DeviceId = ehDefinition.DeviceId, Type = "Temperature", Value = tempProvider.GetTemperature(), Order = ++order }); System.Console.WriteLine(DateTime.Now + ":Sent some data"); //keepGoing = System.Console.ReadKey().Key != ConsoleKey.Q; } }
public async Task<bool> PostTelemetryAsync(EventHubDefinition eventHub, DeviceTelemetry deviceTelemetry) { try { var data = JsonConvert.SerializeObject(deviceTelemetry); var evtData = new EventData(Encoding.UTF8.GetBytes(data)); ///set only if you care about sequential delivery evtData.PartitionKey = ComputeBucket(Guid.NewGuid().ToString(), PartitionCount); await _eventHub.SendAsync(evtData); return true; } catch (Exception e) { //log your exception somehow... return false; } }
public async Task<bool> PostTelemetryAsync(EventHubDefinition eventHub, DeviceTelemetry deviceTelemetry) { // Namespace info. var url = new Uri(string.Format("https://{0}.servicebus.windows.net/{1}/publishers/{2}/messages", eventHub.ServiceNamespace, eventHub.EventHubName, eventHub.DeviceId)); // Create client. var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Origin", "*"); httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Access-Control-Allow-Credentials", "true"); var payload = JsonConvert.SerializeObject(deviceTelemetry); httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", eventHub.SASGeneratedKey); var content = new StringContent(payload, Encoding.UTF8, "application/json"); content.Headers.Add("ContentType", "application/json"); var result = await httpClient.PostAsync(url, content); return result.IsSuccessStatusCode; }
private static void Main(string[] args) { var ehDefinition = new EventHubDefinition { ServiceNamespace = "windowsiot1", DeviceId = "windows10iot", EventHubName = "windowsiot1eventhub", ConnectionString = "Endpoint=sb://windowsiot1.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=gyj5SAwTzrVE3f1XFuT4uyC7bqB82hcPu61D/wx7kl8=", StorageAccountKey = "FyOzVoluW3xGYWWslUdwYk9yPYOi5C+K69bDDQpGIvZ4SwFRXfuFtd0I/sJCxC0k26GLWQK1OY+BSiyAdFzbww==", StorageAccountName = "ehstorage1" }; var storageConnectionString = string.Format("DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}", ehDefinition.StorageAccountName, ehDefinition.StorageAccountKey); var eventProcessorHostName = Guid.NewGuid().ToString(); var eventProcessorHost = new EventProcessorHost(eventProcessorHostName, ehDefinition.EventHubName, EventHubConsumerGroup.DefaultGroupName, ehDefinition.ConnectionString, storageConnectionString); System.Console.WriteLine(DateTime.Now + ":Registering EventProcessor..."); eventProcessorHost.RegisterEventProcessorAsync<SimpleEventProcessor>().Wait(); System.Console.WriteLine(DateTime.Now + ":Receiving. Press enter key to stop worker."); System.Console.ReadLine(); eventProcessorHost.UnregisterEventProcessorAsync().Wait(); }
public NativeTelemetryProvider(EventHubDefinition definition) { _definition = definition; _eventHub = EventHubClient.CreateFromConnectionString(_definition.ConnectionString, _definition.EventHubName); }