private async Task <Zongsoft.Messaging.MessageBase> DequeueOrPeekAsync(int waitSeconds) { var request = new HttpRequestMessage(HttpMethod.Get, this.GetRequestUrl("messages") + (waitSeconds >= 0 ? "?waitseconds=" + waitSeconds.ToString() : "?peekonly=true")); request.Headers.Add("x-mns-version", "2015-06-06"); var response = await _http.SendAsync(request); if (response.IsSuccessStatusCode) { return(MessageUtility.ResolveMessage(this, await response.Content.ReadAsStreamAsync())); } var exception = AliyunException.Parse(await response.Content.ReadAsStringAsync()); if (exception != null) { switch (exception.Code) { case MessageUtility.MessageNotExist: return(null); case MessageUtility.QueueNotExist: throw exception; default: throw exception; } } return(null); }
public async ValueTask <MessageQueueMessage> DequeueAsync(MessageDequeueOptions options, CancellationToken cancellation = default) { if (options == null) { options = MessageDequeueOptions.Default; } var waitSeconds = (long)Math.Ceiling(options.Timeout.TotalSeconds); var request = new HttpRequestMessage(HttpMethod.Get, this.GetRequestUrl("messages") + (options != null && options.Timeout >= TimeSpan.Zero ? "?waitseconds=" + waitSeconds.ToString() : string.Empty)); request.Headers.Add("x-mns-version", "2015-06-06"); var response = await _http.SendAsync(request, cancellation); if (response.IsSuccessStatusCode) { return(MessageUtility.ResolveMessage(this, await response.Content.ReadAsStreamAsync(cancellation))); } var exception = AliyunException.Parse(await response.Content.ReadAsStringAsync(cancellation)); if (exception != null) { switch (exception.Code) { case MessageUtility.MessageNotExist: return(MessageQueueMessage.Empty); case MessageUtility.QueueNotExist: throw exception; default: throw exception; } } return(MessageQueueMessage.Empty); }