azure - 很少有消息在第一次尝试中未传递,Azure 测试功能的传递计数增加
问题描述
我有一个服务总线队列。我已经编写了 azure Test 函数来使用触发器从队列接收消息。我在队列中发布了 10 条消息。我观察到几条消息的传递计数为 3,4 等,但我没有看到任何以前的这些消息传递尝试。不知道怎么会,如果它第一次未能完成/放弃并且也应该出现在日志中。我的队列超时为 1 分钟。这对于下面的空函数来说已经足够了。我在这里想念什么?我还观察到消息出现故障。
我的要求是使用 FIFO 顺序一次处理一条消息。如何得到它?
下面是 Azure 测试功能:
public class Function2
{
[FunctionName("ServiceBusTriggerOrderTest")]
public static void Run([ServiceBusTrigger("in-client-a-queue",
Connection =
"SBUSConnectionString")] Message message, MessageReceiver
messageReceiver,
Int32 deliveryCount,
DateTime enqueuedTimeUtc,
string messageId,
string Label,
ILogger log)
{
try
{
string payload = Encoding.UTF8.GetString(message.Body);
log.LogInformation($"C# ServiceBus queue trigger function processed message:
{payload}");
//Do your things here, such as Some Actions or Calls Some Service or Another Method
//complete the message if there is no error
messageReceiver.CompleteAsync(message.SystemProperties.LockToken);
}
catch (Exception ex)
{
// Do your error handling here
log.LogError($"Error in pressing the message:{ex}");
// Send message to DeadLetter Queue
messageReceiver.DeadLetterAsync(message.SystemProperties.LockToken);
}
}
}
我试图将其设为公共静态异步任务运行,并使用 await 关键字来完成任务,但同样的问题。
我的 host.Json 如下:-
"extensions": {
"serviceBus": {
"messageHandlerOptions": {
"autoComplete": false,
"maxConcurrentCalls": 1
}
}
}
解决方案
推荐阅读
- neo4j - 在 Neo4j 中寻找 K 最短路径
- html - 获取最接近标签外文本的值
- assembly - 为什么“sub esp, 96”、“lea eax, [esp+16]”和“mov [esp+4], eax”?(asm intel 语法)
- javascript - 为每个选定的行获取表格的单元格值?
- r - ctree_control 中的错误...未使用的参数...在 R 中
- php - 带有 Apache Mod-Rewrite 的友好 URL
- python - pyodbc 模块在 unix 本地安装
- c# - 图片存在但不显示
- gradle - 如何在 Gradle Kotlin DSL 中定义 Jacoco 报告聚合?
- java - 为什么 "5".equals(5) 不会评估为真?他们不是都一样,都是5吗?