0

Azure WebJobキューがWebJobを起動していない場合メッセージをバイナリ形式でキューに渡すと、Azure WebJobキューがWebJobを起動していない

私はAzureキューストレージにCloudMessageとしてGOOGLE PROTOBUFバイトをプッシュしました。しかし、Azure Queueのストレージはpingされておらず、そのCloudMessageをAzureに渡します。その代わりにWebJobを実行しています。これらのメッセージはPoison Queuesに移動していますか?

次のコードは、キューメッセージをプールするWebJobです。

プログラムファイル:

public class Program 
{ 
    // Please set the following connection strings in app.config for this WebJob to run: 
    // AzureWebJobsDashboard and AzureWebJobsStorage 
    public static void Main() 
    { 
     try 
     {    

      JobHost host = new JobHost(); 
      //Following code ensures that the WebJob will be running continuously 
      host.RunAndBlock();     
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
    } 
} 

Function.cs

public class Function 
{ 
    //This function will get triggered/Executed when new message is written on an Azure Queue called messagequeue 
    public static void ProcessMessageQueue([QueueTrigger("messagequeue")] string message) 
    { 
     #region WebAPI Call 

     #endregion 
    } 
} 

コードAzureキューへのメッセージのバイト数を追加する:

private void PushPayloadBytesToAzureQueueStorage(byte[] payload) 
    { 
     CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["AzureWebJobsStorage"]); 
     CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); 
     CloudQueue queue = queueClient.GetQueueReference("messagequeue"); 
     queue.CreateIfNotExists(); 
     CloudQueueMessage msg = new CloudQueueMessage(payload); 
     queue.AddMessage(msg); 
    } 

私の場合は、私は、そのキューストレージキューにバイトとしてメッセージを追加しますメッセージを送信し、Azureのクラウドで実行して/公開されている私ののWebジョブをトリガする必要があります。

以下のメソッドシグネチャについては疑問があります。

public static void ProcessMessageQueue([QueueTrigger("messagequeue")] string message) 

メッセージが正常にキューストレージに追加されますが、キューは、Azureの機能を起動しないと、すべてのキュー・メッセージは、キューを毒に移動されているので、私は上記のメソッドのシグネチャでメッセージパラメータに使用する必要がありますどのようなデータ型。

私はここで何が欠けていますか?

これについてのご意見をお待ちしています。

ありがとうございました!

答えて

1

コードに基づいて、この問題を確認しました。​​をSystem.Text.UTF8Encoding.UTF8.GetBytes("hello world " + DateTime.Now)として渡したところ、という文字列のパラメータmessageを取得できました。

How to trigger a function when a queue message is receivedとしての状態を次のよう

stringほかに、パラメータは、バイト配列、CloudQueueMessageオブジェクト、またはユーザーが定義POCOであってもよいです。バイト配列またはCloudQueueMessageパラメータについては

、あなたは次のコードスニペットを参照できます。

System.Text.UTF8Encoding.UTF8.GetString(message); //for byte array 

System.Text.UTF8Encoding.UTF8.GetString(message.AsBytes); //for CloudQueueMessage object 

Azureキューストレージがpingを実行されていないとするのではなく、私のAzureの連続動作WebJobにCloudMessageことを渡しますそのメッセージはポイズンキューに移動していますか?

WebJobs SDKは、キューメッセージを処理する機能を最大5回処理します。メッセージは毒キューに移動されます。詳しくは、How to handle poison messagesの説明を参照してください。

入力のエンコード形式を確認する必要があると仮定しました。そしてあなたの紺碧のストレージの下にあるログを確認することができます。詳細はhereです。また、ProcessMessageQueue機能内でtry-catch-throwを使用してこの問題を絞り込むこともできます。

関連する問題