public static async Task HandleMessage <T>(QueueElement <T> message) { Console.WriteLine("Message received through HandleMessage()"); var imageUrl = ""; //var message = await serviceBus.GetMessage<QueueElement<object>>(m); switch (message.Type) { case "TelemetrySend": // FROM OTHER WORKER var telemetrySendModel = ForceCast <Telemetry>(message.Data); telemetryRepository.Insert(telemetrySendModel); break; case "ActivityClose": // TO WORKER TRIO var closeData = ForceCast <QueueElement <ActivityIdViewModel> >(message); activityRepository.Close(closeData.Data.Id); //-- closeData.Data.FromOrganizer = true; await queueToOtherWorker.SendMessage(closeData); //-- break; case "ActivityStart": var startData = ForceCast <QueueElement <ActivityIdViewModel> >(message); // GetValue<int>(message.Data); activityRepository.Start(startData.Data.Id); //-- startData.Data.FromOrganizer = true; await queueToOtherWorker.SendMessage(startData); //-- break; case "ActivityCreate": var activityCreateModel = ForceCast <ActivityCreateViewModel>(message.Data); activityRepository.Insert(new Activity() { // Id = 0, CreationDate = DateTime.Now, EndDate = null, Location = activityCreateModel.Location, Name = activityCreateModel.Name, RaceUrl = "", //$"https://localhost/raceSample/{new Random().Next(0, 1000)}", IdUser = activityCreateModel.IdUser, Status = 0, Type = activityCreateModel.Type, }); break; case "ActivityJoin": var activityJoinModel = ForceCast <ActivityIdViewModel>(message.Data); activityRepository.AddRunner( activityJoinModel.Id, activityJoinModel.IdUser ); break; } }
public static void Run([EventHubTrigger("itsrunningeventhub", Connection = "EventHubCS")] string myEventHubMessage, TraceWriter log) { log.Info($"C# Event Hub trigger function processed a message: {myEventHubMessage}"); var message = JsonConvert.DeserializeObject <TelemetryData>(myEventHubMessage); string cs = Environment.GetEnvironmentVariable("SqlConnectionString"); var db = new TelemetryRepository(cs); var telemetry = new Telemetry() { Latitude = message.Latitude, Longitude = message.Longitude, Instant = message.Instant, IdActivity = message.IdActivity }; db.Insert(telemetry, message.Username); }
public static void Run([QueueTrigger("coordinates-queue", Connection = "StorageConnectionString")] string queueItem, TraceWriter log) { var listOfCoordinates = JsonConvert.DeserializeObject <IEnumerable <TelemetryMessageModel> >(queueItem); string cs = Environment.GetEnvironmentVariable("RunnersDbConnectionString", EnvironmentVariableTarget.Process); TelemetryRepository repository = new TelemetryRepository(cs); foreach (TelemetryMessageModel item in listOfCoordinates) { var telemetry = new Telemetry() { Latitude = item.Latitude, Longitude = item.Longitude, Instant = DateTimeOffset.Now, IdRunner = 1, IdActivity = 1, SelfiUri = "fodengURI" }; //ERROR: file or assembly not found repository.Insert(telemetry); } }
static async Task Main(string[] args) { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); IConfigurationRoot configuration = builder.Build(); // Retrieve storage account from connection string. CloudStorageAccount storageAccount = CloudStorageAccount.Parse( configuration.GetConnectionString("StorageConnectionString")); // Create the queue client. CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); // Retrieve a reference to a queue. CloudQueue queue = queueClient.GetQueueReference( configuration.GetConnectionString("QueueName")); TelemetryRepository repository = new TelemetryRepository( configuration.GetConnectionString("RunnersDbConnectionString")); while (true) { var message = await queue.GetMessageAsync(); if (message == null) { await Task.Delay(1000); continue; } /* * JObject jsonMessage = JObject.Parse(message.AsString); * * int idActivity = (int)jsonMessage["ActivityId"]; * int idRunner = (int)jsonMessage["RunnerId"]; * * IList<JToken> results = jsonMessage["Telemetry"].Children().ToList(); * var listOfCoordinates = new List<TelemetryModel>(); * foreach (JToken result in results) * { * TelemetryModel searchResult = result.ToObject<TelemetryModel>(); * listOfCoordinates.Add(searchResult); * } */ var messageDeserialized = Newtonsoft.Json.JsonConvert.DeserializeObject <TelemetryModel>(message.AsString); var telemetry = new Telemetry() { Latitude = messageDeserialized.Latitude, Longitude = messageDeserialized.Longitude, Instant = messageDeserialized.Instant, IdActivity = messageDeserialized.ActivityId, SelfiUri = null }; repository.Insert(telemetry); Console.WriteLine(message.Id + " - is on databese"); //delete item in queue when message is inserted on database await queue.DeleteMessageAsync(message); } }
public static async Task HandleMessage <T>(QueueElement <T> message) { Console.WriteLine("Message received through HandleMessage()"); var imageUrl = ""; //var message = await serviceBus.GetMessage<QueueElement<object>>(m); int redirectId = 0; switch (message.Type) { case "TelemetrySend": // EVENT HUB EVENT imageUrl = ""; var telemetrySendModel = ForceCast <TelemetrySendViewModel>(message.Data); if (telemetrySendModel.Image.Length > 0) { var imageData = Convert.FromBase64String(FixBase64(telemetrySendModel.Image)); imageUrl = blobStorage.UploadByteBlob( blobSend, $"{telemetrySendModel.IdActivity}/{telemetrySendModel.IdUser}/{DateTime.Now}_{new Random().Next(0, 20)}.png", "image/png", imageData ).GetAwaiter().GetResult(); } var telemetryModel = new Telemetry() { Longitude = telemetrySendModel.Longitude, Latitude = telemetrySendModel.Latitude, IdActivity = telemetrySendModel.IdActivity, IdUser = telemetrySendModel.IdUser, ImageUrl = imageUrl, Instant = telemetrySendModel.Instant }; telemetryRepository.Insert(telemetryModel); //-- telemetryModel.IdActivity = telemetrySendModel.IdActivityOrganizer; await eventHubSendToOrganizer.SendMessage(new QueueElement <Telemetry>() { Type = "TelemetrySend", Data = telemetryModel }); //-- break; // The organizer events cannot be closed by the client case "ActivityClose": var closeData = ForceCast <ActivityIdViewModel>(message.Data); if (closeData.FromOrganizer) { closeData.Id = activityRepository.GetIdFromOrganizerId(closeData.Id); } activityRepository.Close(closeData.Id); redirectId = closeData.IdUser; break; case "ActivityStart": var startData = ForceCast <ActivityIdViewModel>(message.Data); // GetValue<int>(message.Data); if (startData.FromOrganizer) { startData.Id = activityRepository.GetIdFromOrganizerId(startData.Id); } activityRepository.Start(startData.Id); redirectId = startData.IdUser; break; case "ActivityCreate": var activityCreateModel = ForceCast <ActivityCreateViewModel>(message.Data); activityRepository.Insert(new Activity() { // Id = 0, CreationDate = DateTime.Now, EndDate = null, Location = activityCreateModel.Location, Name = activityCreateModel.Name, RaceUrl = "", IdUser = activityCreateModel.IdUser, Status = 0, Type = activityCreateModel.Type, }); redirectId = activityCreateModel.IdUser; break; case "ActivityJoin": var activityJoinModel = ForceCast <ActivityIdViewModel>(message.Data); activityRepository.AddRunner( activityJoinModel.Id, activityJoinModel.IdUser ); //-- var activityStat = activityRepository.Get(activityJoinModel.Id); if (activityStat.Type == 2) { await eventHubSendToOrganizer.SendMessage(message); } //-- redirectId = activityJoinModel.IdUser; break; case "UserPhotoUpdate": imageUrl = ""; var userPhotoUpdateModel = ForceCast <UserPhotoUpdateViewModel>(message.Data); if (userPhotoUpdateModel.Image.Length > 0) { var imageData = Convert.FromBase64String(FixBase64(userPhotoUpdateModel.Image)); imageUrl = blobStorage.UploadByteBlob( userpicSend, $"{userPhotoUpdateModel.IdUser}/{DateTime.Now}_{new Random().Next(0, 20)}.png", "image/png", imageData ).GetAwaiter().GetResult(); } userRepository.UpdateImage(userPhotoUpdateModel.IdUser, imageUrl); redirectId = userPhotoUpdateModel.IdUser; break; } if (redirectId > 0) { // Alert for redirect //if (UseEventHub) //{ /* * await eventHubSend.SendMessage(new QueueElement<SignalRRedirectViewModel> * { * Type = "SignalRRedirectResponse", * Data = new SignalRRedirectViewModel() * { * Username = userRepository.Get(redirectId).Name * }, * });*/ //} // else // { await responseClient.SendMessage(new QueueElement <SignalRRedirectViewModel> { Type = "SignalRRedirectResponse", Data = new SignalRRedirectViewModel() { Username = userRepository.Get(redirectId).Name }, }); //} } }