0

Microsoft によって「リリース」された CloudFx ライブラリを一連のサンプルと共に使用しようとしています。ライブラリとその使用方法 (サービス バスを除く) に関するドキュメントはほとんどありませんが、私は CHM の参照とサンプルで何とかしようとしています。ストレージ キューを介して通信する単純なプロデューサー/コンシューマー ワーカー ロールで彼らが行ったことを再現しようとしていますが、CloudQueueListenerExtension クラスを期待どおりに機能させることができないようです。まず、リスナーの周りに単純なラッパー クラスを作成しました。

public class QueueListener<T>
{
    private readonly CloudQueueLocation _queueLocation;
    private readonly CloudQueueListenerExtension<T> _queueListenerExtension;
    private readonly IObserver<T> _observer;

    public static QueueListener<T> StartNew(IExtensibleComponent owner, string storageAccount, Action<T> action)
    {
        var location = new CloudQueueLocation()
                            {
                                StorageAccount = storageAccount,
                                QueueName = typeof(T).Name.ToLowerInvariant()
                            };
        return new QueueListener<T>(owner, location, action).Start();
    }

    protected QueueListener(IExtensibleComponent owner, CloudQueueLocation queueLocation, Action<T> action)
    {
        _queueLocation = queueLocation;
        _queueListenerExtension = new CloudQueueListenerExtension<T>(queueLocation, owner);
        _observer = Observer.Create(action);

        _queueListenerExtension.Subscribe(_observer);            
    }

    protected QueueListener<T> Start()
    {
        _queueListenerExtension.StartListener();
        return this;
    }
}

次に、次のようにメインのワーカー ロールに設定します。

QueueListener<MyMessageType>.StartNew(this, storageAccountString,
         newMsg => _log.InfoFormat("Got {0}", newMsg));

MyMessageType メッセージをキューに投稿する Web アプリがありますが、アクションが実行されません。診断ログに、リスナーが正しいストレージ アカウントと正しいキューを指していることを示すいくつかのトレースがあり、ReliableCloudQueueStorage.Get. サンプルをビルドできていませんが、サンプルとまったく同じ方法でリスナー拡張機能を使用していると思います。

何が起こっているのかについてのアイデアはありますか?

4

1 に答える 1

1

すばらしい説明とコード スニペットをありがとう。トラブルシューティングに非常に役立ちました。:-)

最近、CloudFx を Reactive Extensions 2.0 に移行しました。移行を行っている間、キュー リスナー コンポーネント内でオブザーバブル シーケンスを内部的に処理する方法のいくつかの詳細を理解できませんでした。これは現在対処されており、直面していた課題を解決することを目的とした新しいバージョンの NuGet パッケージ (1.3.0.1) をプッシュしました。

乗り方についてお知らせください。

ヴァレリー

于 2012-08-30T03:47:31.083 に答える