在我的天蓝色功能中,有时我想推迟我的消息。但如果我这样做,我会得到一个例外:
[7/30/2020 5:59:02 PM] Message processing error (Action=Complete, ClientId=MessageReceiver1UserCreated/Subscriptions/MySubscription, EntityPath=UserCreated/Subscriptions/MySubscription, Endpoint=xxxxxxxxxxx.servicebus.windows.net)
[7/30/2020 5:59:02 PM] Microsoft.Azure.ServiceBus: 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.
这是我的代码
[FunctionName("UserCreated")]
public static async Task Run([ServiceBusTrigger("UserCreated", "MySubscription", Connection = "ServiceBusConnectionString")]UserCreated userCreated, ILogger log, string lockToken, MessageReceiver messageReceiver)
{
//some logic.....
await messageReceiver.DeferAsync(lockToken);
}
老实说,我不知道我做错了什么。代码示例 id 找到了,还有这个StackOverflow:Azure Function V2 服务总线消息延迟 https://stackoverflow.com/questions/56439156/azure-function-v2-service-bus-message-deferral帖子,对我没有帮助。
据我了解,该消息是在函数完成后自动完成的。所以我尝试禁用自动完成功能,但我也没有成功找到可行的解决方案。
使用包:
- Microsoft.Azure.WebJobs.Extensions.ServiceBus 4.1.0
- (参考文献)Microsoft.Azure.ServiceBus 4.1.1