gpt4 book ai didi

azure-functions - 如何获取 Azure 服务总线触发的 Azure Function V3 背后的底层 MessageReceiver 引用

转载 作者:行者123 更新时间:2023-12-04 09:16:44 26 4
gpt4 key购买 nike

我已将 Azure 函数配置为在触发 Azure 函数时不显示“自动完成”消息。我的问题是我需要自己标记消息完成,并在事务的上下文中这样做(如下)。此使用“通过”路由的事务在控制台应用程序中有效,但在 Azure 中由于缺少对使消息出队的原始接收者的引用而失败。
如何获取底层接收器引用,以便我可以原子地完成和发送? 在 Azure Functions 中似乎没有办法做到这一点。

using (var ts = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
{
try
{
await receiver.CompleteAsync(completeMessage.SystemProperties.LockToken);

for (var i = 0; i <= sendMessages.Length - 1; i++)
await sender.SendAsync(sendMessages[i]);

ts.Complete();
}
catch (Exception ex)
{
// This rolls back send and complete in case an exception happens
}
}
如果没有原始接收器引用(以及您自己新创建的引用),您将获得以下异常:
ERROR: Microsoft.Azure.ServiceBus.MessageLockLostException: The lock supplied is invalid. Either the lock expired, or the message has already been removed from the queue, or was received by a different receiver instance.

最佳答案

您需要注入(inject)函数使用的消息接收器来接收传入的消息。注入(inject)是通过函数参数完成的。 This post进入细节。

关于azure-functions - 如何获取 Azure 服务总线触发的 Azure Function V3 背后的底层 MessageReceiver 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63185046/

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