gpt4 book ai didi

Azure Function ServiceBusTrigger 在几毫秒内多次触发同一消息,而无需第一次完成

转载 作者:行者123 更新时间:2023-12-01 05:54:14 32 4
gpt4 key购买 nike

为什么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}");
}

最佳答案

很可能您的函数主体在消息处理期间抛出异常。 Function App 中止其处理,消息返回到队列并立即再次调度,只是再次失败等等。

最后,它达到了最大传递计数并被停在死信队列中。

你能验证一下我的假设吗?例如。也打印 deliveryCount,并检查 DLQ 中的内容。

关于Azure Function ServiceBusTrigger 在几毫秒内多次触发同一消息,而无需第一次完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50766267/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com