public GetEnvelopeResult TryGetMessage() { CloudQueueMessage message; try { message = this._queue.GetMessage(this._visibilityTimeout); } catch (ThreadAbortException) { // we are stopping return(GetEnvelopeResult.Empty); } catch (Exception ex) { SystemObserver.Notify(new FailedToReadMessage(ex, this._queueName)); return(GetEnvelopeResult.Error()); } if (null == message) { return(GetEnvelopeResult.Empty); } try { var unpacked = this.DownloadPackage(message); return(GetEnvelopeResult.Success(unpacked)); } catch (StorageException ex) { SystemObserver.Notify(new FailedToAccessStorage(ex, this._queue.Name, message.Id)); return(GetEnvelopeResult.Retry); } catch (Exception ex) { SystemObserver.Notify(new MessageInboxFailed(ex, this._queue.Name, message.Id)); // new poison details this._posionQueue.Value.AddMessage(message); this._queue.DeleteMessage(message); return(GetEnvelopeResult.Retry); } }
public GetEnvelopeResult TryGetMessage() { FileInfo message; try { message = _queue.EnumerateFiles().FirstOrDefault(); } catch (Exception ex) { _observer.Notify(new FailedToReadMessage(ex, _queueName)); return(GetEnvelopeResult.Error()); } if (null == message) { return(GetEnvelopeResult.Empty); } try { var unpacked = DownloadPackage(message); return(GetEnvelopeResult.Success(unpacked)); } catch (IOException ex) { // this is probably sharing violation, no need to // scare people. if (!IsSharingViolation(ex)) { _observer.Notify(new FailedToAccessStorage(ex, _queue.Name, message.Name)); } return(GetEnvelopeResult.Retry); } catch (Exception ex) { _observer.Notify(new EnvelopeDeserializationFailed(ex, _queue.Name, message.Name)); // new poison details var poisonFile = Path.Combine(_posionQueue.Value.FullName, message.Name); message.MoveTo(poisonFile); return(GetEnvelopeResult.Retry); } }
public GetEnvelopeResult TryGetMessage() { CloudQueueMessage message; try { message = _queue.GetMessage(_visibilityTimeout); } catch (Exception ex) { _observer.Notify(new FailedToReadMessage(ex, _queueName)); return(GetEnvelopeResult.Error()); } if (null == message) { return(GetEnvelopeResult.Empty); } try { var unpacked = DownloadPackage(message); return(GetEnvelopeResult.Success(unpacked)); } catch (StorageClientException ex) { _observer.Notify(new FailedToAccessStorage(ex, _queue.Name, message.Id)); return(GetEnvelopeResult.Retry); } catch (Exception ex) { _observer.Notify(new EnvelopeDeserializationFailed(ex, _queue.Name, message.Id)); // new poison details _posionQueue.Value.AddMessage(message); _queue.DeleteMessage(message); return(GetEnvelopeResult.Retry); } }