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
. サンプルをビルドできていませんが、サンプルとまったく同じ方法でリスナー拡張機能を使用していると思います。
何が起こっているのかについてのアイデアはありますか?