代码之家  ›  专栏  ›  技术社区  ›  BlakeB9

有没有办法在主机中设置批量大小。azure函数的“extensionBundle”的json文件

  •  0
  • BlakeB9  · 技术社区  · 4 年前

    有没有办法在主机内设置批量大小。带有“extensionBundle”键的json文件?下面是它的样子:

    "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[2.*, 3.0.0)"
    }
    

    我见过其他一些人这样做:

    {
    "extensions": {
      "queues": {
        "batchSize": 1,...
    

    虽然我不确定如果我更换extensionbundle是否会出现问题。。。有人知道我将如何访问捆绑包并更改我想要更改的内容吗?或者我应该完全替换extensionBundle吗

    0 回复  |  直到 4 年前
        1
  •  0
  •   Hari Krishna    4 年前

    在Azure函数中, Sample host.json file 由所有可能的选项组成:

    {
        "version": "2.0",
        "aggregator": {
            "batchSize": 1000,
            "flushTimeout": "00:00:30"
        },
        "extensions": {
            "blobs": {},
            "cosmosDb": {},
            "durableTask": {},
            "eventHubs": {},
            "http": {},
            "queues": {},
            "sendGrid": {},
            "serviceBus": {}
        },
        "extensionBundle": {
            "id": "Microsoft.Azure.Functions.ExtensionBundle",
            "version": "[1.*, 2.0.0)"
        },
        "functions": [ "QueueProcessor", "GitHubWebHook" ],
        "functionTimeout": "00:05:00",
        "healthMonitor": {
            "enabled": true,
            "healthCheckInterval": "00:00:10",
            "healthCheckWindow": "00:02:00",
            "healthCheckThreshold": 6,
            "counterThreshold": 0.80
        },
        "logging": {
            "fileLoggingMode": "debugOnly",
            "logLevel": {
              "Function.MyFunction": "Information",
              "default": "None"
            },
            "applicationInsights": {
                "samplingSettings": {
                  "isEnabled": true,
                  "maxTelemetryItemsPerSecond" : 20,
                  "evaluationInterval": "01:00:00",
                  "initialSamplingPercentage": 100.0, 
                  "samplingPercentageIncreaseTimeout" : "00:00:01",
                  "samplingPercentageDecreaseTimeout" : "00:00:01",
                  "minSamplingPercentage": 0.1,
                  "maxSamplingPercentage": 100.0,
                  "movingAverageRatio": 1.0,
                  "excludedTypes" : "Dependency;Event",
                  "includedTypes" : "PageView;Trace"
                },
                "enableLiveMetrics": true,
                "enableDependencyTracking": true,
                "enablePerformanceCountersCollection": true,            
                "httpAutoCollectionOptions": {
                    "enableHttpTriggerExtendedInfoCollection": true,
                    "enableW3CDistributedTracing": true,
                    "enableResponseHeaderInjection": true
                },
                "snapshotConfiguration": {
                    "agentEndpoint": null,
                    "captureSnapshotMemoryWeight": 0.5,
                    "failedRequestLimit": 3,
                    "handleUntrackedExceptions": true,
                    "isEnabled": true,
                    "isEnabledInDeveloperMode": false,
                    "isEnabledWhenProfiling": true,
                    "isExceptionSnappointsEnabled": false,
                    "isLowPrioritySnapshotUploader": true,
                    "maximumCollectionPlanSize": 50,
                    "maximumSnapshotsRequired": 3,
                    "problemCounterResetInterval": "24:00:00",
                    "provideAnonymousTelemetry": true,
                    "reconnectInterval": "00:15:00",
                    "shadowCopyFolder": null,
                    "shareUploaderProcess": true,
                    "snapshotInLowPriorityThread": true,
                    "snapshotsPerDayLimit": 30,
                    "snapshotsPerTenMinutesLimit": 1,
                    "tempFolder": null,
                    "thresholdForSnapshotting": 1,
                    "uploaderProxy": null
                }
            }
        },
        "managedDependency": {
            "enabled": true
        },
        "retry": {
          "strategy": "fixedDelay",
          "maxRetryCount": 5,
          "delayInterval": "00:00:05"
        },
        "singleton": {
          "lockPeriod": "00:00:15",
          "listenerLockPeriod": "00:01:00",
          "listenerLockRecoveryPollingInterval": "00:01:00",
          "lockAcquisitionTimeout": "00:01:00",
          "lockAcquisitionPollingInterval": "00:00:03"
        },
        "watchDirectories": [ "Shared", "Test" ],
        "watchFiles": [ "myFile.txt" ]
    }
    

    样本格式 extensions 在里面 host.json 设定 batch size 是:

    {
        "version": "2.0",
        "extensions": {
            "queues": {
                "maxPollingInterval": "00:00:02",
                "visibilityTimeout" : "00:00:30",
                "batchSize": 16,
                "maxDequeueCount": 5,
                "newBatchThreshold": 8,
                "messageEncoding": "base64"
            }
        }
    }
    

    下面是我设置 batchSize 在里面 主办json Azure函数的文件:

    ```json
    {
      "version": "2.0",
      "logging": {
        "applicationInsights": {
          "samplingSettings": {
            "isEnabled": true,
            "excludedTypes": "Request"
          }
        }
      },
      "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[2.*, 3.0.0)"
      },
      "extensions": {
        "queues": {
          "batchSize": 1
        },
        "http": {
        "routePrefix": "api",
        "maxOutstandingRequests": 200,
        "maxConcurrentRequests": 1
        }
    } }
    

    不需要更换 extensionBundle ,我们需要在中设置所需的属性 extensions 块

    另一个示例代码类似于存储队列触发器,用于更改重试频率- maxDequeueCount 值必须在中更改 主办json 文件并重新启动该函数。

    {
      "version": "2.0",
      "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[2.*, 3.0.0)"
      },
      "extensions": {
        "queues": {
          "maxDequeueCount": 1
        }
      }
    }