use*_*351 6 azure azureservicebus azure-servicebus-queues azure-functions
为什么serviceBus会多次触发同一条消息?相同的触发器由服务总线上的相同消息执行:
[FunctionName("ProcessOrderFromServiceBusQueue")]
public static void RunQueueMessages(
[ServiceBusTrigger("orderqueue", Connection = "ServiceBusConnectionString")]
string myQueueItem,
int deliveryCount,
DateTime enqueuedTimeUtc,
string messageId,
long sequenceNumber,
TraceWriter log, ExecutionContext context)
{
log.Info($"C# ServiceBus Queue trigger function processed message: {myQueueItem}");
var config = new ConfigurationBuilder()
.SetBasePath(context.FunctionAppDirectory)
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
//var conn = config["ServiceBusConnectionString"];
//var queueName = config["QueueName"];
//var queueClient = new QueueClient(conn, queueName);
//queueClient.CompleteAsync()
log.Info($"Received Order: OrderId:{messageId} SequenceNumber:{sequenceNumber} Body:{myQueueItem}");
// Deserialize the message body
var order = JsonConvert.DeserializeObject<Order>(myQueueItem);
// Process the order
ProcessOrder(order, log, config);
log.Info($"C# ServiceBus queue trigger function processed message: {messageId}");
}
Run Code Online (Sandbox Code Playgroud)
您的函数体很可能在消息处理期间抛出异常。Function App 中止其处理,消息返回到队列并立即再次调度,只是再次失败,等等。
最后,它达到了最大传递计数并停在死信队列中。
你能验证一下我的假设吗?例如,也打印deliveryCount
,并检查 DLQ 中的内容。
归档时间: |
|
查看次数: |
1832 次 |
最近记录: |