首页 > 解决方案 > 很少有消息在第一次尝试中未传递,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
   }
 }

}

标签: azureazure-functionsazureservicebus

解决方案


推荐阅读