0

消費したい Service Bus キューがあります。私が見つけたすべてのサンプルは、次のような記述を推奨しています。

class Program
{
    private static String ServiceBusConnectionString = ConfigurationManager.ConnectionStrings["Microsoft.ServiceBus.ConnectionString"].ConnectionString;

    static void Main()
    {
        var jobHostConfiguration = new JobHostConfiguration
        {
            ServiceBusConnectionString = ServiceBusConnectionString,
        };
        var jobHost = new JobHost(jobHostConfiguration);
        jobHost.RunAndBlock();
    }
}

public class QueueItem
{
    public String Name;
    public Int64 Id;
}

public class Functions
{
    public void ProcessQueueItem([ServiceBusTrigger("queue-name")] QueueItem queueItem)
    {
        // TODO: process queue item
    }
}

上記のコードの問題は、プログラムでキュー名がハードコードされていることです。キュー接続文字列と同じように、構成からキュー名を取得できるようにしたいと考えています。残念ながら、属性にはコンパイル時の定数しか渡すことができないため、構成から取得した静的に初期化された文字列を渡すことはできません。

少し調べてみましたが、Service Bus 関数バインディングをセットアップする他の方法を見つけることができませんでした。それは不可能ですか?

4

1 に答える 1

1

カスタムINameResolverを使用して、目的を達成できます。

ここにある公式サンプルの 1 つは、シナリオを正確にカバーしています。ShutdownMonitorの関数を見てFunctions.csから、ConfigNameResolverクラスを見てください。

于 2014-10-26T03:43:38.140 に答える