0

Azureドキュメントのベストプラクティスの記事では、パフォーマンスを向上させるためにQueueClientを再利用して複数のメッセージを送信することを推奨しています。 https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-performance-improvements#reusing-factories-and-clientsAzure関数からの応答メッセージを送信するためにQueueClientインスタンスを再利用するにはどうすればよいですか?

私はAzure関数が(要求メッセージである)サービスバスキュートリガーによってトリガされた後に応答を送信する要求 - 応答メッセージのシナリオを持っています。 関数が実行されるたびに新しいQueueClientを作成すると、QueueClient.SendAsyncのパフォーマンスが低下します(1.5〜3秒)。

静的変数でQueueClientを再使用すると、SendAsync時間は後の呼び出しで50msに減少します。しかし、静的な参照は、いつ閉じるかわからないので、QueueClient接続を再利用する信頼できる方法ではないようです。

複数の関数を実行してQueueClientを再利用して閉じても問題ありませんか? Azure-Functionランタイムは、確実にキュークライアントを閉じることができるイベントを提供できますか?

答えて

0

ここでの課題は、Azure関数がメッセージの送信を「完了」したことを知らないことです。関数がアイドル状態になった場合、インスタンスを削除することがありますが、静的QueueClientを関数内で明示的に閉じずに行うことには欠点はないと考えています。これがベストプラクティスです。

0

QueueClientで手動でメッセージを送信するのではなく、サービスバス出力バインディングに切り替えることをお勧めします。この方法でランタイムはQueueClientのインスタンスとその設定を管理します。 Azure Functions Service Bus bindings「サービスバス出力バインディング」を参照してください。

それ以外の場合、@jeffhollanによって提案されているような静的QueueClientは実行可能なオプションです。

関連する問題