2017-06-10 11 views
3

私はthis pageから、トリガーとして使用されるときにキューメッセージのメタデータプロパティにアクセスすることができますが、その逆を実行することができます。 私は、キューにメッセージを書き込むAzure関数を持っていますが、現在のデフォルトの有効期限があり、非常に短い有効期限を設定したいので、非常に短期間しかキューに入れられません。Azureキューに書き込む関数 - メタデータを設定できますか?

メッセージをAzure関数からキューに書き込んで有効期限を設定する方法はありますか?

おかげ

EDIT 1: 1つの警告は、私は先に時間のキューの名前を知らないということです。これは受信メッセージの一部なので、出力バインディングのパラメータとしてキュー名が設定されています @Mikhailの推奨どおりに変更しました。それはスタンドとしてここでの機能は次のとおりです。

#r "Microsoft.WindowsAzure.Storage" 
#r "Newtonsoft.Json" 

using System; 
using Microsoft.WindowsAzure.Storage.Queue; 
using Newtonsoft.Json; 

public static void Run(MyType myEventHubMessage, CloudQueue outputQueue, TraceWriter log) 
{ 
    var deviceId = myEventHubMessage.DeviceId; 
    var data = JsonConvert.SerializeObject(myEventHubMessage); 
    var msg = new CloudQueueMessage(data); 
    log.Info($"C# Event Hub trigger function processed a message: {deviceId}"); 
    outputQueue.AddMessage(msg, TimeSpan.FromMinutes(3), null, null, null); 

} 

public class MyType 
{ 
    public string DeviceId { get; set; } 
    public double Field1{ get; set; } 
    public double Field2 { get; set; } 
    public double Field3 { get; set; } 
} 

そして、私のfunction.jsonに結合出力:

{ 
"type": "CloudQueue", 
"name": "$return", 
"queueName": "{DeviceId}", 
"connection": "myConn", 
"direction": "out" 
} 

答えて

5

変更CloudQueueにあなたのパラメータの型にして、手動でメッセージを追加し、有効期限を設定します(または、むしろTime To Live)を使用します。

public static void Run(string input, CloudQueue outputQueue) 
{ 
    outputQueue.AddMessage(
     new CloudQueueMessage("Hello " + input), 
     TimeSpan.FromMinutes(5)); 
} 

編集:あなたの出力キュー名が要求に依存している場合、あなたが不可欠バインディングを使用することができます応答のための

public static void Run(string input, IBinder binder) 
{ 
    string outputQueueName = "outputqueue " + input; 
    QueueAttribute queueAttribute = new QueueAttribute(outputQueueName); 
    CloudQueue outputQueue = binder.Bind<CloudQueue>(queueAttribute); 
    outputQueue.AddMessage(
     new CloudQueueMessage("Hello " + input), 
     TimeSpan.FromMinutes(5)); 
} 
+0

感謝。十分に簡単だと思われますが、私はキューの名前を事前に知っていません。これは着信メッセージの一部なので、キュー名は出力バインディングのパラメータとして設定されます。それは重要ですか?私が今どこにいるのか私の編集を参照してください – LDJ

+0

@LDJこれをカバーする私の答えを広げました。 – Mikhail

+0

絶対的な魅力を働かせました。私はIBinderを読み返す必要があります - 助けてくれてありがとう – LDJ

関連する問題