5

私はAzureにサービスバスキューとサービスバスキュートリガー機能を持っています。最初に関数を公開し、サービスバスキューにメッセージを送信すると、関数がトリガされ、正常に実行されます。Azureサービスバスキュートリガー機能は、しばらくの間実行された後にキューに入れられたメッセージを受け取らない

しかし、私はそれを残しておき、キューに1時間ほどメッセージを送信しないと、メッセージを送信しても機能は起動しません。私は手動で '実行'を押すことによってポータルで再び機能を実行するか、Azureに再公開する必要があります。

私はそれを毎月何かを再起動する必要はありませんので、私はそれを実行し続けますか? 私のアプリは、数時間から数日間、新しいメッセージをキューに送信しないことがあります。

FYI - 私はこの関数が5分後にシャットダウンすることを読んでいますが、この場合は関数を使用できません。そして、タイマのトリガを使用したくないので、それから私はお金を無駄にしたい!右? 私の唯一の最良の選択肢は、1日を通して30分ごとにタイマー機能を実行することです。これを吸い取ってこのようにしなければならないかもしれませんが、メッセージがヒットしたときにその機能を実行することを望みますメッセージキュー。

FYI2 - 最終的には、特定の日付までメッセージを非表示にしたいのですが、最初にキューにプッシュすると(たとえば、キュ​​ーに入れられてから1週間表示するように設定されています)私は何を達成しようとしていますか?授業終了後、登録された生徒にメールを送って欲しい。そのクラスは1〜30日前に予定されているかもしれない。だから、クラスが予定されているとき、私は、クラスが最初に私のアプリでスケジュールされた後、1週間、2週間2週間、3週間3日など、クラスが終了するまで機能を実行したくないです。ここで

は、私は私の支払いプランに投稿するよう求めてきた

public static class Function1 
{ 
    [FunctionName("Function1")] 
    public static void Run([ServiceBusTrigger("yogabandy2017", AccessRights.Listen, Connection = "Yogabandy2017_RootManageSharedAccessKey_SERVICEBUS")]string myQueueItem, TraceWriter log) 
    { 
     log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}"); 


    } 
} 

機能function.jsonここ

{ 
"generatedBy": "Microsoft.NET.Sdk.Functions-1.0.0.0", 
"configurationSource": "attributes", 
"bindings": [ 
{ 
    "type": "serviceBusTrigger", 
    "connection": "Yogabandy2017_RootManageSharedAccessKey_SERVICEBUS", 
    "queueName": "yogabandy2017", 
    "accessRights": "listen", 
    "name": "myQueueItem" 
} 
], 
"disabled": false, 
"scriptFile": "..\\bin\\PostEventEmailFunction.dll", 
"entryPoint": "PostEventEmailFunction.Function1.Run" 
} 

から抜粋されている

enter image description here

+1

なぜ新しい質問を以前の質問とよく似ていますが、回答に応答することなく続けますか? – Mikhail

+0

よく似ているかもしれませんが、同じではありません! – user1186050

+0

キューで管理権限を与えようとしましたか? ( "accessRights": "manage")私は過去に聞き取り許可だけが何もしていないと思って機能を騙したいくつかの問題があったことを知っています... – Niels

答えて

2

私は、以下のシナリオ1と2を使用していると思われます。 r活動がない期間。

  1. 無料/共有アプリのサービスプランの機能アプリ。 Always Onは利用できませんので、プランをアップグレードしてください。

  2. 機能/基本/標準/プレミアムアプリケーションサービスプランです。機能で常にオンをチェックする必要がありますアプリケーション設定

  3. 機能アプリケーション消費計画を使用している場合は、これが動作するはずです。各リクエストで関数appを起動します。あなたのシナリオでは、必要なときだけリソースを利用するため、このアプローチをお勧めします。

FYI1 - 上記の動作を得ると、タイマーは必要ありません。アプリケーション設定で

消費計画は、次のようになります。 Azure Function Consumption Plan

+0

こんにちはジェイソン。私がAzureアカウントの下で設定したと思ったことに基づいて、私はpay-as-you-goを作成したように見えます。私は機能アプリケーションの設定でいつどこでもボタンをチェックすることができますが、どこにも表示されません。私は限界を突破したらアプリを止める日々のクォータ制限を設定できることを知っているので、すでに消費計画に入っているかもしれないと思うよ! – user1186050

+0

@ user1186050 - 実際に見つけるのはかなり難しいです。関数アプリケーションでは、[概要]タブで開始し、[設定された機能]という見出しが表示されます。その下で "アプリケーション設定"をクリックします。 –

+0

アプリケーション設定と機能アプリの設定リンクの両方が表示されていて、両方をクリックすることができます。いずれのセクションでもどこに表示されているのか分かりません。私のアカウント用に設定したプランです。質問 - あなたは消費計画と同じように払い出されるわけではありませんか? – user1186050

1

価格ティアの下 1.プラットフォームの機能 2.アプリケーションサービス計画 3で

をご利用のサービスプランを確認してくださいしてくださいあなたのアプリ名。

+0

私は理由を見つけたと思う!使用されている接続文字列名が正しくありません。 – user1186050

+0

問題が見つかりましたらうれしいですが、私はそれがまったく機能していることに驚いています。接続文字列が正しいことを確認するには、サービスバスにアクセスし、共有アクセスポリシーから取得します。また、ARMテンプレートを使用することもできますが、別のトピックもあります。 –

関連する問題