データベースに挿入する必要があるレコードを持つキューを処理するAzure関数があります。その働くファイン。しかし、私は30秒ごとにレコードを確認できるように、queueTriggerの代わりにTimerトリガーを使いたいと思っていました。誰か助けてもらえますか? https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-timerに記載されているタイマーの基本的な実装を試しましたが、どのようにレコードを処理できるのか分かりません。Azureのタイマートリガーの使用キュー処理の機能
答えて
最後のコメントに基づいて、キュートリガーを使用する必要がない場合(メッセージが多すぎる場合は問題ありません。Azureは、すべてのメッセージを処理するために必要なリソースを拡大/縮小しますあなたは、しかし、それはしばらくのために実行するために高価になることができます)あなたは単にConsole Appで使用する同じコードをAzure関数にアップロードすることができます。ここで
は、C#でキューからデータを消費する方法の例です:https://docs.microsoft.com/en-us/azure/storage/storage-dotnet-how-to-use-queues
あなただけ.csxスクリプト(あなたがのMainメソッドに入れたコードとして実行するコードを適応させる必要がありますコンソールアプリケーションは、.csxスクリプトのRunメソッドに入れたコードと同じコードになります)。
私は既にキュートリガーの助けを借りて、キューを正常に使用しています。この関数は、キューに新しいレコードがあるときに自動的にトリガされます。 queueTriggerではなくTimerトリガーを使用してキューを遅延させ、Azureのすべてのリソースを消費しないようにしたいと考えました。 –
申し訳ありませんが私は私の答えではっきりしていないと思う、私は5分未満でキューからメッセージをプルできるようにする例を入れて、Azure関数に同じコードをアップロードし、引き金。 –
キュー入力バインディングを使用してCloudQueueにバインドできます。
ここに、キューからメッセージをフェッチするTimerTriggerのサンプルコードを示します。
Function.json
{
"bindings": [
{
"type": "timerTrigger",
"name": "myTimer",
"schedule": "0 * * * * *",
"direction": "in"
},
{
"type": "queue",
"name": "clQueue",
"queueName": "myqueue",
"connection": "",
"direction": "in"
}
],
"disabled": false
}
Run.csx
#r "Microsoft.WindowsAzure.Storage"
using Microsoft.WindowsAzure.Storage.Queue;
public static async Task Run(TimerInfo myTimer, CloudQueue clQueue, TraceWriter log)
{
var message = await clQueue.GetMessageAsync();
log.Info($"{message.AsString}");
clQueue.DeleteMessage(message);
}
これはきれいに見えます。間違いなくこれを試みます。ありがとう。 –
タイプをキューとして認識する際にエラーが発生しています。何か案は? –
スキーマの検証に入力タイプとしてのキューがまだありません。ただし、ランタイムエラーは発生しません。コードは正常に実行されるはずです。 – Naren
これは私のために働いていた答えである: 使用した場合のAzureキューまたはServiceBusキューへの直接結合はありませんタイマートリガー。関数またはコンソールアプリケーションを使用していない場合は、キュー接続と書き込みロジックを自分で記述する必要があります。 ServiceBus Queueから単一のメッセージを読み取るための例として、次のようなものがあります。
var connectionString = "Endpoint = sb://.servicebus.windows.net/; SharedAccessKeyName = RootManageSharedAccessKey; SharedAccessKey =" "; var queueName = "";
var client = QueueClient.CreateFromConnectionString(connectionString、queueName); var message = client.Receive();
- 1. Azureの機能を持つAzureサービスバスキューメッセージの処理
- 2. キュー:リッスンタイムアウト処理キュー処理
- 3. 設定可能なタイマートリガー - Azure Webジョブ
- 4. Azureの応答キュー管理
- 5. バッチ処理用のAzureウィンドウサービス
- 6. キューのリターンの処理:out_r
- 7. エラー処理の新機能
- 8. WebViewの機能/エラー処理
- 9. コードバを使用したハイブリッドモバイルアプリケーションのバックボタン機能の処理方法
- 10. jQueryのキュー機能
- 11. 使用Azureの機能は、httpリクエスト
- 12. Pythonでキューを使用したCache-memの処理
- 13. Azure CosmosDB - キューとしての使用
- 14. Azureキュー - 機能 - メッセージの可視性 - 作業者?
- 15. Azure Webjobタイマートリガーは起動しません
- 16. Azureサービスバスのキューメッセージの処理
- 17. 前処理多値機能?
- 18. Firebaseエラー処理のクラウド機能
- 19. Rails 3:プライバシー機能の処理
- 20. パニックと遅延機能の処理
- 21. 二重機能フォームの処理
- 22. 機能のエラー処理、通知、スキップ
- 23. キューの削除機能
- 24. シングルスレッドプールで複数のキューを処理するスプリング同時処理
- 25. Azure iot画像をアップロードして紺色の機能で処理する
- 26. Azureモバイルアプリテーブルコントローラの例外処理
- 27. Azure Workerロールのエラー処理
- 28. Azureリクエストレスポンスセッションタイムアウト処理
- 29. AzureイベントハブとAzure関数を使用したパイプライン処理
- 30. Stormの遅延キュー/メッセージ処理
この場合、手動でキューをポーリングする必要があります。なぜあなたはこの変更を望んでいますか? – Mikhail
@Mikhailと同じ質問なぜこれを行う必要がありますか?キューを入力として持つアイデアは、キュー内のメッセージを同時に処理するだけでなく、その機能を処理するメッセージが実行されない場合もあります。 –
私たちは大きなキューを持っています(一度に処理されるレコード数は100万になるかもしれません)ので、関数は新しい関数Appインスタンスを読み込んで処理します。インポートするデータの特定のバッチがあるので、消費計画を使用しますが、その後はキュー内で何日もアクティビティがない可能性があります。したがって、我々はTimerを使用して、一度にFunction Appのインスタンスが1つだけスピンされるようにしたいと考えました。 @ christian-melendez –