private async void OnNext(JobActivity activity) { List <string> eligibleActivity = new List <string>() { JobActivityOperationNames.Cancel, JobActivityOperationNames.Delete, JobActivityOperationNames.Restore, JobActivityOperationNames.Update }; if (activity.ReferenceId != null && eligibleActivity.Any(x => x == activity.Operation)) { var jobUpdatedMessage = new TaskCatMessage() { JobID = activity.JobId, JobHRID = activity.HRID, ReferenceId = activity.ReferenceId, RemoteJobStage = RemoteJobStage.UPDATE, RemoteJobState = activity.Value.ToString() }; logger.Info($"Sending update {activity.Value.ToString()} back to polling service for job {activity.HRID}"); var pushMessageBody = new Message(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(jobUpdatedMessage))); await this.pushQueueClient.SendAsync(pushMessageBody); logger.Info($"Sent message back to polling service"); } }
private async Task ProcessMessagesAsync(Message message, CancellationToken token) { logger.Info($"Received jobpull message: SequenceNumber:{message.SystemProperties.SequenceNumber}"); var messageString = Encoding.UTF8.GetString(message.Body); var taskcatOrder = JsonConvert.DeserializeObject <ClassifiedDeliveryOrder>(messageString); logger.Info($"Order from {taskcatOrder.UserId} converted, ready to order"); var jobCreatedMessage = new TaskCatMessage(); try { var newJob = await PostNewOrder(taskcatOrder); logger.Info($"New job created. Remote Order = {taskcatOrder.ReferenceOrderId} => TaskCat Job {newJob.Id} => HRID {newJob.HRID}"); jobCreatedMessage = new TaskCatMessage { ReferenceId = taskcatOrder.ReferenceOrderId, JobHRID = newJob.HRID, JobID = newJob.Id, RemoteJobStage = RemoteJobStage.CREATED }; } catch (Exception ex) // Catching global exception is a bad thing, fix this { logger.Error(ex); logger.Error($"Error processing remote Order = {taskcatOrder.ReferenceOrderId}"); jobCreatedMessage = new TaskCatMessage { ReferenceId = taskcatOrder.ReferenceOrderId, RemoteJobStage = RemoteJobStage.ERROR }; } logger.Info($"Sending message back to polling service"); var pushMessageBody = new Message(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(jobCreatedMessage))); await this.pushQueueClient.SendAsync(pushMessageBody); logger.Info($"Sent message back to polling service"); }