预取是否可以与服务总线触发器一起使用?

zan*_*ane 1 c# azureservicebus azure-durable-functions

我有一个持久编排客户端,它是由服务总线主题触发的。

[FunctionName("ServiceBusTrigger")]
        public static async Task ServiceBusTrigger(
            [ServiceBusTrigger("topicname", "subscriptionname", Connection = "MyServiceBusKey")]string mySbMsg,
            [OrchestrationClient]DurableOrchestrationClient starter,
            ILogger log)
        {
            string instanceId = await starter.StartNewAsync("Orchestrator", mySbMsg);

            log.LogInformation($"Started orchestration with ID = '{instanceId}'.");

        }
Run Code Online (Sandbox Code Playgroud)

在扩展下启用预取计数是否会host.json导致在服务总线触发器中预取消息?

host.json:

{
    "version": "2.0",
    "extensions": {
        "serviceBus": {
            "prefetchCount": 100
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Sea*_*man 7

在 host.json 中的扩展下启用预取计数是否会导致在服务总线触发器中预取消息?

预取计数影响 Azure Functions SDK 使用的底层预取的最大消息数MessageReceiver。您必须确保使用prefetchCount定义的值正确配置,以maxConcurrentCalls确保不会预取太多消息,并且在等待处理时不会丢失锁。

  • “MaxConcurrentCalls”是单个“MessageReceiver”将同时处理的消息数量。`PrefetchCount` 取决于单个 `MessageReceiver` 在调用接收消息时将检索的消息数量。将这两个设置为相同的值会适得其反。`PrefetchCount` 应大于同时处理的消息数。 (3认同)