Skip to content

Commit 878e32d

Browse files
authored
Merge pull request #227458 from normesta/normesta-reg-updates-11
Updating the practices guidance as per CSS feedback
2 parents 3344f44 + c61aaee commit 878e32d

File tree

1 file changed

+24
-15
lines changed

1 file changed

+24
-15
lines changed

articles/storage/blobs/storage-blob-event-overview.md

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Reacting to Azure Blob storage events
33
description: Use Azure Event Grid to subscribe and react to Blob storage events. Understand the event model, filtering events, and practices for consuming events.
44
author: normesta
55
ms.author: normesta
6-
ms.date: 06/13/2022
6+
ms.date: 02/15/2023
77
ms.topic: conceptual
88
ms.service: storage
99
ms.subservice: blobs
@@ -46,10 +46,11 @@ First, subscribe an endpoint to an event. Then, when an event is triggered, the
4646

4747
See the [Blob storage events schema](../../event-grid/event-schema-blob-storage.md?toc=/azure/storage/blobs/toc.json) article to view:
4848

49-
> [!div class="checklist"]
50-
> - A complete list of Blob storage events and how each event is triggered.
51-
> - An example of the data the Event Grid would send for each of these events.
52-
> - The purpose of each key value pair that appears in the data.
49+
- A complete list of Blob storage events and how each event is triggered.
50+
51+
- An example of the data the Event Grid would send for each of these events.
52+
53+
- The purpose of each key value pair that appears in the data.
5354

5455
## Filtering events
5556

@@ -88,16 +89,24 @@ To match events from blobs created in specific container sharing a blob suffix,
8889
## Practices for consuming events
8990

9091
Applications that handle Blob storage events should follow a few recommended practices:
91-
> [!div class="checklist"]
92-
> - As multiple subscriptions can be configured to route events to the same event handler, it is important not to assume events are from a particular source, but to check the topic of the message to ensure that it comes from the storage account you are expecting.
93-
> - Similarly, check that the eventType is one you are prepared to process, and do not assume that all events you receive will be the types you expect.
94-
> - As messages can arrive after some delay, use the etag fields to understand if your information about objects is still up-to-date. To learn how to use the etag field, see [Managing concurrency in Blob storage](./concurrency-manage.md?toc=/azure/storage/blobs/toc.json#managing-concurrency-in-blob-storage).
95-
> - As messages can arrive out of order, use the sequencer fields to understand the order of events on any particular object. The sequencer field is a string value that represents the logical sequence of events for any particular blob name. You can use standard string comparison to understand the relative sequence of two events on the same blob name.
96-
> - Storage events guarantees at-least-once delivery to subscribers, which ensures that all messages are outputted. However due to retries between backend nodes and services or availability of subscriptions, duplicate messages may occur. To learn more about message delivery and retry, see [Event Grid message delivery and retry](../../event-grid/delivery-and-retry.md).
97-
> - Use the blobType field to understand what type of operations are allowed on the blob, and which client library types you should use to access the blob. Valid values are either `BlockBlob` or `PageBlob`.
98-
> - Use the url field with the `CloudBlockBlob` and `CloudAppendBlob` constructors to access the blob.
99-
> - Ignore fields you don't understand. This practice will help keep you resilient to new features that might be added in the future.
100-
> - If you want to ensure that the **Microsoft.Storage.BlobCreated** event is triggered only when a Block Blob is completely committed, filter the event for the `CopyBlob`, `PutBlob`, `PutBlockList` or `FlushWithClose` REST API calls. These API calls trigger the **Microsoft.Storage.BlobCreated** event only after data is fully committed to a Block Blob. To learn how to create a filter, see [Filter events for Event Grid](../../event-grid/how-to-filter-events.md).
92+
93+
- As multiple subscriptions can be configured to route events to the same event handler, it is important not to assume events are from a particular source, but to check the topic of the message to ensure that it comes from the storage account you are expecting.
94+
95+
- Similarly, check that the eventType is one you are prepared to process, and do not assume that all events you receive will be the types you expect.
96+
97+
- There is no service level agreement around the time it takes for a message to arrive. It's not uncommon for messages to arrive anywhere from 30 minutes to two hours. As messages can arrive after some delay, use the etag fields to understand if your information about objects is still up-to-date. To learn how to use the etag field, see [Managing concurrency in Blob storage](./concurrency-manage.md?toc=/azure/storage/blobs/toc.json#managing-concurrency-in-blob-storage).
98+
99+
- As messages can arrive out of order, use the sequencer fields to understand the order of events on any particular object. The sequencer field is a string value that represents the logical sequence of events for any particular blob name. You can use standard string comparison to understand the relative sequence of two events on the same blob name.
100+
101+
- Storage events guarantees at-least-once delivery to subscribers, which ensures that all messages are outputted. However due to retries between backend nodes and services or availability of subscriptions, duplicate messages may occur. To learn more about message delivery and retry, see [Event Grid message delivery and retry](../../event-grid/delivery-and-retry.md).
102+
103+
- Use the blobType field to understand what type of operations are allowed on the blob, and which client library types you should use to access the blob. Valid values are either `BlockBlob` or `PageBlob`.
104+
105+
- Use the url field with the `CloudBlockBlob` and `CloudAppendBlob` constructors to access the blob.
106+
107+
- Ignore fields you don't understand. This practice will help keep you resilient to new features that might be added in the future.
108+
109+
- If you want to ensure that the **Microsoft.Storage.BlobCreated** event is triggered only when a Block Blob is completely committed, filter the event for the `CopyBlob`, `PutBlob`, `PutBlockList` or `FlushWithClose` REST API calls. These API calls trigger the **Microsoft.Storage.BlobCreated** event only after data is fully committed to a Block Blob. To learn how to create a filter, see [Filter events for Event Grid](../../event-grid/how-to-filter-events.md).
101110

102111
## Feature support
103112

0 commit comments

Comments
 (0)