web-dev-qa-db-ja.com

AzureFunctionアプリでキュートリガーのキュー名を構成する方法

Azureで関数アプリを作成していて、キュートリガーを使用したいと思います。設計時にキュー名を構成する方法を知っています。例:

[FunctionName("MyTestFunction")]
public static void Run([QueueTrigger("myqueue-items", Connection = "testdelete")]string myQueueItem, TraceWriter log)

ただし、構成ファイルで定義および参照できるようにしたいと思います。 function.json(おそらくこれ)、Host.json、local.settings.jsonの存在を知っていますが、そこにキュー名を設定して関数で参照させる方法がわかりません。

Visual Studioで作成された新しく作成された関数をデプロイすると(新しい15.3アップデートで)、デプロイメント後のfunction.jsonファイルで次のことがわかります(ローカルで開発するときにファイルが存在しない場合でも)。

  "bindings": [
    {
      "type": "queueTrigger",
      "queueName": "myqueue-items",
      "connection": "testdelete",
      "name": "myQueueItem"
    }

そのファイルを作成し、「queueName」を実際の関数の値と一致しないものに変更しても、残念ながらオーバーライドされないことがわかりました(これは簡単すぎると思います)。

関数QueueTrigger属性のfunction.jsonのバインディングを参照するにはどうすればよいですか?

おそらく、解決策が何であれ、毒キューの処理で同じことを行うことができますか?

これを実行したい理由は、まったく同じ関数の複数のインスタンスをデプロイする必要があるが、それぞれを異なるキューにポイントする必要があるためです(最大メモリ制限を回避するため)。

ありがとう。

11
Steviebob

アプリ関数の設定として(%settingName%構文を使用して)キュー名を参照するだけではいけませんか?次に、デプロイする各関数アプリで、設定を必要なキュー名に変更します。

[FunctionName("MyTestFunction")]
public static void Run([QueueTrigger("%MyQueueName%", Connection = "testdelete")]string myQueueItem, TraceWriter log)

そして、ローカルで実行するためにlocal.settings.jsonで設定を指定します

{
  "Values: {
     "MyQueueName": "myqueue-items"
   }
}
29
Garth Mason