C# 核心无法从 sqs 中删除消息
C# core not able to delete message from sqs
我正在使用 .net core 和 aws sdk,
我能够阅读消息,但之后它不会被删除,
注意 - 默认可见性超时设置为 1 分钟,操作在秒内完成,但仍未被删除。
查看代码 -
string qurl = "xxxxxx";
Task<ReceiveMessageResponse> receiveMessageResponse;
using (var sqs = new AmazonSQSClient("xxxx", "xxxxx", xxxxx))
{
const int maxMessages = 1; // 1-10
//Receiving a message
var receiveMessageRequest = new ReceiveMessageRequest
{
// Get URL from Configuration
QueueUrl = qurl,
// The maximum number of messages to return.
// Fewer messages might be returned.
MaxNumberOfMessages = maxMessages,
// A list of attributes that need to be returned with message.
AttributeNames = new List<string> { "All" },
// Enable long polling.
// Time to wait for message to arrive on queue.
};
receiveMessageResponse = sqs.ReceiveMessageAsync(receiveMessageRequest);
if (receiveMessageResponse.Result.Messages != null)
{
foreach (var message in receiveMessageResponse.Result.Messages)
{
Class1 obj = new Class1();
string finalname= obj.fnprocess(message.Body);
Console.WriteLine(finalname);
var res = message.ReceiptHandle;
Task<DeleteMessageResponse> DeleteMessageResponse;
DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest()
{
QueueUrl = qurl,
ReceiptHandle = res
};
DeleteMessageResponse = sqs.DeleteMessageAsync(deleteMessageRequest);
}
}
}
请求响应如下
任何建议我做错了什么。
嗨实际上问题出在钥匙上,
将代码更改为
var result = sqs.DeleteMessageAsync(deleteMessageRequest).Result;
为了捕获错误,现在可以正常工作了。
我正在使用 .net core 和 aws sdk, 我能够阅读消息,但之后它不会被删除, 注意 - 默认可见性超时设置为 1 分钟,操作在秒内完成,但仍未被删除。 查看代码 -
string qurl = "xxxxxx";
Task<ReceiveMessageResponse> receiveMessageResponse;
using (var sqs = new AmazonSQSClient("xxxx", "xxxxx", xxxxx))
{
const int maxMessages = 1; // 1-10
//Receiving a message
var receiveMessageRequest = new ReceiveMessageRequest
{
// Get URL from Configuration
QueueUrl = qurl,
// The maximum number of messages to return.
// Fewer messages might be returned.
MaxNumberOfMessages = maxMessages,
// A list of attributes that need to be returned with message.
AttributeNames = new List<string> { "All" },
// Enable long polling.
// Time to wait for message to arrive on queue.
};
receiveMessageResponse = sqs.ReceiveMessageAsync(receiveMessageRequest);
if (receiveMessageResponse.Result.Messages != null)
{
foreach (var message in receiveMessageResponse.Result.Messages)
{
Class1 obj = new Class1();
string finalname= obj.fnprocess(message.Body);
Console.WriteLine(finalname);
var res = message.ReceiptHandle;
Task<DeleteMessageResponse> DeleteMessageResponse;
DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest()
{
QueueUrl = qurl,
ReceiptHandle = res
};
DeleteMessageResponse = sqs.DeleteMessageAsync(deleteMessageRequest);
}
}
}
请求响应如下
任何建议我做错了什么。
嗨实际上问题出在钥匙上, 将代码更改为
var result = sqs.DeleteMessageAsync(deleteMessageRequest).Result;
为了捕获错误,现在可以正常工作了。