Azure函数Servicebus触发器MaxAutoRenewDuration不受尊重
我试图理解Azure函数Servicebus触发器MaxAutoRenewDuration不受尊重,azure,dependency-injection,azureservicebus,azure-servicebus-queues,azure-function-app,Azure,Dependency Injection,Azureservicebus,Azure Servicebus Queues,Azure Function App,我试图理解host.json文件中MessageHandlerOptions对象上的MaxAutoRenewDuration属性是如何工作的。我确实为我的概念验证(PoC)创建了一个简单的Azure函数: 我在项目/解决方案中的当前NuGet软件包: My host.json文件: { "version": "2.0", "logging": { "logLevel": { "De
host.json
文件中MessageHandlerOptions
对象上的MaxAutoRenewDuration
属性是如何工作的。我确实为我的概念验证(PoC)创建了一个简单的Azure函数:
我在项目/解决方案中的当前NuGet软件包:
My host.json文件:
{
"version": "2.0",
"logging": {
"logLevel": {
"Default": "Trace"
},
"applicationInsights": {
"samplingSettings": {
"isEnabled": false
}
}
},
"extensions": {
"serviceBus": {
"prefetchCount": 20,
"messageHandlerOptions": {
"autoComplete": false,
"maxConcurrentCalls": 10,
"MaxAutoRenewDuration": "00:07:00"
}
}
}
}
我对上面的期望是,我的Azure函数将通过依赖项注入自动注册MaxAutoRenewDuration
值。我已经测试了AutoComplete
属性在加载时是否受到尊重,并且它确实是。我的PoC试图模拟一个长时间运行的处理作业,调用一个外部端点(这只是一个逻辑应用程序,具有随机延迟)
如您所见,我确实注释掉了`//messageReceiver.RenewLockAsync(message);´. 如果取消对该行的注释,它将按预期工作,我的锁将被更新。但是如果我不使用它,我只获得消息的初始锁,由队列本身的服务器端配置设置
问题:这是设计的行为吗?还是应该像我期望的那样工作?通过host.json
中的MessageHandlerOptions
对象设置MaxAutoRenewDuration
,然后由SDK本身处理
编辑:我刚刚挖掘了messageReceiver
对象上的receivePump
属性,并从中挖掘了registerHandlerOptions
属性。从这里我可以看到它有正确的值。但后来我感觉某些特定于后端/SDK的事件处理程序并没有像预期的那样启动。还是我自己去登记
刚刚发现github问题:
{
"version": "2.0",
"logging": {
"logLevel": {
"Default": "Trace"
},
"applicationInsights": {
"samplingSettings": {
"isEnabled": false
}
}
},
"extensions": {
"serviceBus": {
"prefetchCount": 20,
"messageHandlerOptions": {
"autoComplete": false,
"maxConcurrentCalls": 10,
"MaxAutoRenewDuration": "00:07:00"
}
}
}
}