0

我可以在 Azure Functions 1.0 中实现类似于以下内容的内容,但现在它似乎在 2.0中CompleteAsync()并且AbandonAsync()不再可用。

[FunctionName("Process")]
public static async System.Threading.Tasks.Task RunAsync(
    [ServiceBusTrigger(
        "%ServiceBus.Topic%", "%ServiceBus.Subscription%",
        Connection = "AzureWebJobsServiceBus")]Message message, ILogger log) {
    try {
        MyMessageModel messageModel = message.GetBody<MyMessageModel>();
        await DoAllTheThingsAsync().ConfigureAwait(false);                
        await message.CompleteAsync().ConfigureAwait(false);
    } catch {
        await message.AbandonAsync().ConfigureAwait(false);
        throw;
    }
}

是否已将控制权交给了Peek Lock 的 Azure 函数默认值

4

1 回答 1

3

Azure Function 1.X 使用WindowsAzure.ServiceBus库来处理消息。在那里,方法CompleteAsync()与Function 接收的BrokeredMessageAbandonAsync()对象一样可用。

在 2.X 版本的 Functions 中,使用了Microsoft.Azure.ServiceBus库,此处 BrokeredMessage 被Message对象替换,没有此类方法可用。它们仅在QueueClient下可用。

于 2018-12-20T05:35:16.157 回答