7

新しいメッセージが Azure ServiceBus キューに追加されるたびにトリガーされるAzure 関数を作成しました。このコードを使用すると、正常に動作します。

#r "Newtonsoft.Json"
#load "..\shared\person.csx"

using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;

public static void Run(string message, TraceWriter log)
{
    var person = JsonConvert.DeserializeObject<Person>(message, 
            new JsonSerializerSettings() {ContractResolver = new CamelCasePropertyNamesContractResolver()});
    log.Verbose($"From DeserializeObject: {person.FirstName} {person.LastName}");
}

メッセージをそのような POCO にバインドすることもできることがわかりました。

public static void Run(Person message, TraceWriter log)
{
    log.Verbose($"From DeserializeObject: {message.FirstName} {message.LastName}");
}

BrokeredMessageメッセージのプロパティにアクセスする必要があるため、メッセージをにバインドしたいと思います。

4

2 に答える 2

16

編集新しい SDK は、次を使用して servicebus SDK をサポートします#r directive

#r "Microsoft.ServiceBus"
using Microsoft.ServiceBus.Messaging;

public static void Run(BrokeredMessage msg, TraceWriter log)
{
    log.Info($"C# ServiceBus queue trigger function processed message: {msg}");
}

古いバージョン

2 つのステップのみ:

Nuget パッケージproject.jsonへの参照を追加するファイルを作成しました( SO Postを参照)。WindowsAzure.ServiceBus

{
    "frameworks": {
        "net46":{
            "dependencies": {
                "WindowsAzure.ServiceBus": "2.7.6"
            }
        }
    }
}

仲介メッセージへの参照を追加しました。

using Microsoft.ServiceBus.Messaging;

public static void Run(BrokeredMessage  message, TraceWriter log)
{
    log.Verbose("Function has been triggered !!!");
}
于 2016-04-19T01:43:30.137 に答える
2

トーマスのソリューションを試しましたが、これはもう機能しないようです。

ドキュメントには次のように記載されています。

さらに、次のアセンブリは特殊なケースであり、単純な名前 (例: #r "AssemblyName") で参照できます。

  • ...
  • Microsoft.ServiceBus

したがって、project.json ファイルに触れなくても、次のように動作します。

#r "Microsoft.ServiceBus"

using Microsoft.ServiceBus.Messaging;

public static void Run(BrokeredMessage msg, TraceWriter log)
{
    log.Info($"C# ServiceBus queue trigger function processed message: {msg}");
}
于 2017-01-10T12:15:33.740 に答える