2

gzip 圧縮されたファイルを Azure ストレージ コンテナーにアップロードします (入力)。次に、Blob を取得して解凍し、別のコンテナー (出力) にドロップする WebJob があります。どちらのコンテナーも同じストレージ アカウントを使用します。

私の問題は、すべてのブロブを処理しないことです。常に 1 つが欠落しているようです。今朝、11 個の BLOB を入力コンテナーにアップロードしましたが、処理されて出力コンテナーにダンプされたのは 10 個だけでした。4 をアップロードすると、3 が処理されます。11 個の BLOB がアップロードされているにもかかわらず、ダッシュボードには 10 個の呼び出しが表示されます。11 番目のブロブでトリガーされるようには見えません。1つだけアップロードすると、それを処理するようです。

Always On を true に設定して、標準モードで Web サイトを実行しています。

私が試してみました:

これは私の最新のコードです。私は何か間違ったことをしていますか?

public class Functions
    {
        public static void Unzip(
            [BlobTrigger("input/{name}.gz")] CloudBlockBlob inputBlob,
            [Blob("output/{name}")] CloudBlockBlob outputBlob)
        {
            using (Stream input = inputBlob.OpenRead())
            {
                using (Stream output = outputBlob.OpenWrite())
                {
                    UnzipData(input, output);
                }
            }
        }

        public static void UnzipData(Stream input, Stream output)
        {
            GZipStream gzippedStream = null;

            gzippedStream = new GZipStream(input, CompressionMode.Decompress);
            gzippedStream.CopyTo(output);            
        }
    }
4

2 に答える 2

0

回避策として、Blob を直接リッスンせずにキューを間に入れるとどうなりますか?入力 BLOB コンテナーに書き込むときに、新しい BLOB に関するメッセージもキューに書き込み、WebJob にリッスンさせます。この Queue では、メッセージが Queue に到着すると、Web ジョブ関数が入力 Blob コンテナーからファイルを読み取り、出力 Blob コンテナーにコピーします。このモデルはあなたに合っていますか?

于 2015-01-09T19:34:30.313 に答える