Azure Function 的服务总线 PeekLock 问题
Service Bus PeekLock issue with Azure Function
我的服务总线主题中有多条消息,我想在服务总线触发器上一条一条地处理这条消息,它应该获取所有未处理的消息。因为我正在进行测试和调试,所以我不希望消息完成,即如果它没有完成,它就会留在主题中供任何其他服务使用。
我从带有服务总线主题触发器的 Azure Function App 开始,一直到这里,我在日志中收到了所有消息,但是一旦完成,我就没有收到任何其他消息,因为所有消息都已经消费了,他们转移到“死信消息计数”,所以我很难进行任何调试和测试。
我想知道如何使用 Azure Function Service Bus 触发器处理这个问题,我 运行 函数在控制台中看到我的消息正文,退出它,然后进行必要的转换,然后重复过程。没有服务总线触发器,我可以使用 PeekLock 东西来完成它并且不允许完成任何消息,但是我如何使用 Function 来完成它,因为它似乎立即接收消息以进行触发。
namespace ServiceBusCopyFunction
{
public static class GetMetadataFromSB
{
static ISubscriptionClient subscriptionClient;
[FunctionName("GetMetadataFromSB")]
public static void Run([ServiceBusTrigger("TopicNameSB", "SubscriptionNameSB", Connection = "AzureServiceBusString")] string mySbMsg, ILogger log)
{
log.LogInformation($"C# ServiceBus topic trigger function processed message: {mySbMsg}");
}
}
}
您可以在 host.json 文件中停用 autoComplete 功能。这是参考:
https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus-output?tabs=csharp#hostjson-settings
示例:
{
"version": "2.0",
"extensions": {
"serviceBus": {
"messageHandlerOptions": {
"autoComplete": false
}
}
}
}
所以消息在处理后不会完成。
我的服务总线主题中有多条消息,我想在服务总线触发器上一条一条地处理这条消息,它应该获取所有未处理的消息。因为我正在进行测试和调试,所以我不希望消息完成,即如果它没有完成,它就会留在主题中供任何其他服务使用。
我从带有服务总线主题触发器的 Azure Function App 开始,一直到这里,我在日志中收到了所有消息,但是一旦完成,我就没有收到任何其他消息,因为所有消息都已经消费了,他们转移到“死信消息计数”,所以我很难进行任何调试和测试。
我想知道如何使用 Azure Function Service Bus 触发器处理这个问题,我 运行 函数在控制台中看到我的消息正文,退出它,然后进行必要的转换,然后重复过程。没有服务总线触发器,我可以使用 PeekLock 东西来完成它并且不允许完成任何消息,但是我如何使用 Function 来完成它,因为它似乎立即接收消息以进行触发。
namespace ServiceBusCopyFunction
{
public static class GetMetadataFromSB
{
static ISubscriptionClient subscriptionClient;
[FunctionName("GetMetadataFromSB")]
public static void Run([ServiceBusTrigger("TopicNameSB", "SubscriptionNameSB", Connection = "AzureServiceBusString")] string mySbMsg, ILogger log)
{
log.LogInformation($"C# ServiceBus topic trigger function processed message: {mySbMsg}");
}
}
}
您可以在 host.json 文件中停用 autoComplete 功能。这是参考: https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus-output?tabs=csharp#hostjson-settings
示例:
{
"version": "2.0",
"extensions": {
"serviceBus": {
"messageHandlerOptions": {
"autoComplete": false
}
}
}
}
所以消息在处理后不会完成。