空きAppendBlobに書き込んでいます(.NETを使用しています)。許可されているブロックの最大数に達していれば、何かを追加する前に確認したいと思います追加する。 I have readその制限は50kですので、私はその数値を使用します。そのために私はこのAzure AppendBlobのプロパティAppendBlobCommittedBlockCountがnullになっています
public async Task ProcessEventsAsync(PartitionContext context, IEnumerable<EventData> messages)
{
foreach (var message in messages)
{
try
{
if (_appendBlob.Properties.AppendBlobCommittedBlockCount == _maximumBlockNumberPerBlob)
{
CreateBlob(null);
}
ProcessMessage(message);
}
catch (Exception ex)
{
_log.Error("Failed Processing Message", ex);
}
}
await context.CheckpointAsync();
}
をしようとしていた。しかし(私もそれを呼び出すためにTimer classを使用していて、それがその魚のnull引数を取る)AppendBlobCommittedBlockCountは常にnullとして来ているとCreateBlob方法は、単に新しいブロブを作成します。それがどうして起こるのか、これが方法でないなら、どうすればそれをチェックすることができるのでしょうか?
おかげ
UPDATE:
方法CreateBlobは以下の通りです:
public void CreateBlob(object _)
{
var storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageAccount"));
var appendBlobReference = CloudConfigurationManager.GetSetting("appendBlobReference");
var blobClient = storageAccount.CreateCloudBlobClient();
var currentDate = DateTime.UtcNow;
var container = blobClient.GetContainerReferenc("testContainer");
container.CreateIfNotExists();
_appendBlob = container.GetAppendBlobReference($"{folderName}/{appendBlobReference}-{currentDate.ToString("yyyyMMddHHmm")}");
_appendBlob.CreateOrReplace();
}
ビーイング_appendBlobプライベートフィールドやフォルダ名とappendBlobReferenceはちょうど
すべてのこれらのメソッドは内部でされる文字列EventHubsからイベントをフェッチするためにIEventProcessorを実装するクラスです。したがって、基本的にTask ProcessEvenstAsyncはストリームに新しいものがあるときに呼び出されます。
また、CreateBlobを初めて呼び出すときは、タイマを使用してIEventProcessorを実装するクラスのコンストラクタ内にあります(完全であるかどうかに関係なく15分ごとに新しいものを作成します)。このビットは、私はちょうどCloudAppendBlob.CreateOrReplace
を使用してアペンドブロブを作成しようとしましたし、私が気づいたことは、これはAppendBlobCommittedBlockCount
を返さないことであり、このプロパティの値はnull
(デフォルトのままである理由です
_timer = new Timer(CreateBlob, null, TimeSpan.FromMilliseconds(0), TimeSpan.FromMinutes(int.Parse(CloudConfigurationManager.GetSetting("updateBlobNameIntervalInMinutes"))));
と作成
あなたが作成しているどのように共有してください。 '_appendBlob'。そのプロパティをどこにフェッチしていますか? –
@ GauravMantri私はifステートメントの行ごとにそれらにアクセスすると思ったので、プロパティを取得する場所についてはわからないが、質問を更新した – mitomed