Я пробую функцию канала изменений BLOB-объектов Azure, и для меня он ведет себя странно с добавлением BLOB-объектов: в фиде отсутствуют события добавления.
Мой сценарий:
Создайте учетную запись хранения, включите функцию подачи изменений: Канал изменений включен
Создайте Append Blob, если он не существует (1), и добавьте в него некоторый ввод (2).
private void WriteBlob(string input) { MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(input)); try { if (client == null) { var credential = new ClientSecretCredential("...", "..."); client = new AppendBlobClient(new Uri("..."), credential); } client.CreateIfNotExists(); // (1) client.AppendBlock(stream); // (2) } catch (Exception ex) { Console.WriteLine(ex.Message); } }
Получение записей ленты изменений в отдельном консольном приложении.
public static List<BlobChangeFeedEvent> GetChanges() { var credential = new ClientSecretCredential("...", "..."); BlobChangeFeedClient blobChangeFeedClient = new BlobChangeFeedClient(new Uri("..."), credential); List<BlobChangeFeedEvent> events = new List<BlobChangeFeedEvent>(); foreach (BlobChangeFeedEvent changeFeedEvent in blobChangeFeedClient.GetChanges()) { events.Add(changeFeedEvent); } return events; }
Проблема в том, что после нескольких запусков метода WriteBlob
я получаю только одно событие канала изменения, которое соответствует созданию большого двоичного объекта, а последующие добавления отсутствуют в канале, однако входные данные успешно добавляются к ресурсу большого двоичного объекта.
Вопрос в том, почему это так работает? Я не нашел ничего особенного в типе BLOB-объекта Append Blob относительно канала изменений в документах.