public async Task <Tuple <bool, string> > ProcessQueueMessage(Message message, CancellationToken token) { bool success = true; string result = ""; if (message != null) { try { var body = message.GetBody <string>(); if (!String.IsNullOrWhiteSpace(body)) { NotificationItem ni = null; try { ni = ObjectSerialization.Deserialize <NotificationItem>(body); } catch (Exception ex) { success = false; result = "Unable to parse message body Exception: " + ex.ToString(); //message.DeadLetter(); await _client.DeadLetterAsync(message.SystemProperties.LockToken); } await ProcessNotificationItem(ni, message.MessageId, body); } else { success = false; result = "Message body is null or empty"; } try { //message.Complete(); await _client.CompleteAsync(message.SystemProperties.LockToken); } catch (MessageLockLostException) { } } catch (Exception ex) { success = false; result = ex.ToString(); Logging.LogException(ex); //message.Abandon(); await _client.AbandonAsync(message.SystemProperties.LockToken); } } return(new Tuple <bool, string>(success, result)); }
public async Task <Tuple <bool, string> > ProcessQueueMessage(Message message, CancellationToken token) { bool success = true; string result = ""; if (message != null) { try { var body = message.GetBody <string>(); if (!String.IsNullOrWhiteSpace(body)) { CqrsEvent qi = null; try { qi = ObjectSerialization.Deserialize <CqrsEvent>(body); } catch (Exception ex) { success = false; result = "Unable to parse message body Exception: " + ex.ToString(); //message.Complete(); await _client.CompleteAsync(message.SystemProperties.LockToken); } success = await ProcessPaymentQueueItem(qi); } try { if (success) { await _client.CompleteAsync(message.SystemProperties.LockToken); } //message.Complete(); } catch (MessageLockLostException) { } } catch (Exception ex) { Logging.LogException(ex); Logging.SendExceptionEmail(ex, "PaymentQueueLogic"); await _client.AbandonAsync(message.SystemProperties.LockToken); //message.Abandon(); success = false; result = ex.ToString(); } } return(new Tuple <bool, string>(success, result)); }
public async Task <Tuple <bool, string> > ProcessQueueMessage(Message message, CancellationToken token) { bool success = true; string result = ""; if (message != null) { try { var body = message.GetBody <string>(); if (!String.IsNullOrWhiteSpace(body)) { DistributionListQueueItem dlqi = null; try { dlqi = ObjectSerialization.Deserialize <DistributionListQueueItem>(body); } catch (Exception ex) { success = false; result = "Unable to parse message body Exception: " + ex.ToString(); //message.Complete(); await _client.CompleteAsync(message.SystemProperties.LockToken); } await ProcessDistributionListQueueItem(dlqi); } try { if (success) { await _client.CompleteAsync(message.SystemProperties.LockToken); } //message.Complete(); } catch (MessageLockLostException) { } } catch (Exception ex) { result = ex.ToString(); Logging.LogException(ex); //message.Abandon(); await _client.DeadLetterAsync(message.SystemProperties.LockToken); } } return(new Tuple <bool, string>(success, result)); }
public async Task <Tuple <bool, string> > ProcessQueueMessage(Message message, CancellationToken token) { bool success = true; string result = ""; if (message != null) { MessageQueueItem mqi = null; try { var body = message.GetBody <string>(); if (!String.IsNullOrWhiteSpace(body)) { try { mqi = ObjectSerialization.Deserialize <MessageQueueItem>(body); } catch (Exception ex) { success = false; result = "Unable to parse message body Exception: " + ex.ToString(); //message.Complete(); await _client.CompleteAsync(message.SystemProperties.LockToken); } await ProcessMessageQueueItem(mqi); } try { if (success) { await _client.CompleteAsync(message.SystemProperties.LockToken); } //message.Complete(); } catch (MessageLockLostException) { } } catch (Exception ex) { result = ex.ToString(); if (mqi != null) { ex.Data.Add("DepartmentId", mqi.DepartmentId); if (mqi.Message != null) { ex.Data.Add("MessageId", mqi.Message.MessageId); ex.Data.Add("SendingUserId", mqi.Message.SendingUserId); ex.Data.Add("RecievingUserId", mqi.Message.ReceivingUserId); } } ex.Data.Add("MQI", JsonConvert.SerializeObject(mqi)); Logging.LogException(ex); await _client.AbandonAsync(message.SystemProperties.LockToken); //message.Abandon(); } } return(new Tuple <bool, string>(success, result)); }
public void PopulateQueue() { if (!_isLocked) { _isLocked = true; var t1 = new Task(() => { try { Message message = null; while (message != null) { try { var queueItem = new HeartbeatQueueItem(); if (message.UserProperties["Type"] != null) { queueItem.Type = (HeartbeatTypes)int.Parse(message.UserProperties["Type"].ToString()); } //if (message.Properties["Timestamp"] != null) // queueItem.Timestamp = DateTime.Parse(message.Properties["Timestamp"].ToString()); try { queueItem.Data = message.GetBody <string>(); _queue.Enqueue(queueItem); // Remove message from subscription //message.Complete(); } catch (System.ServiceModel.FaultException) { message = null; } catch (TimeoutException) { message = null; } catch (MessageLockLostException) { } catch (InvalidOperationException) { //message.Complete(); } } catch (MessageLockLostException) { } catch (Exception ex) { Logging.LogException(ex); // Indicate a problem, unlock message in subscription //message.Abandon(); } } } finally { _isLocked = false; _cleared = false; } }); t1.Start(); } }