问题
Documentation on retries states that after pre-defined retries period of 2 hours (24 hours when service GAs) retries are seized. What happens to the events that were not delivered successfully? Is there a way to store those using something like Storage blob?
回答1:
I'm a Microsoft Program Manager working on the Azure Event Grid team. The documentation is correct, while in preview the service will drop messages that are not delivered in 2 hours. When we make this service generally available (no set date yet as of typing this) or even before we will increase this time to 24 hours. The idea you have for storing messages in Blob Storage is something we are strongly considering before we make this service generally available.
回答2:
An update since Azure EventGrid is now GA:
From the documentation (Event Grid message delivery and retry):
Event Grid uses an exponential backoff retry policy for event delivery.
Event Grid adds a small randomization to all retry steps. After one hour, event delivery is retried once an hour.
By default, Event Grid expires all events that aren't delivered within 24 hours. You can customize the retry policy when creating an event subscription. You provide the maximum number of delivery attempts (default is 30) and the event time-to-live (default is 1440 minutes).
When Event Grid can't deliver an event, it can send the undelivered event to a storage account. This process is known as dead-lettering. By default, Event Grid doesn't turn on dead-lettering. To enable it, you must specify a storage account to hold undelivered events when creating the event subscription. You pull events from this storage account to resolve deliveries.
For an example of setting up a dead letter location, see Dead letter and retry policies.
来源:https://stackoverflow.com/questions/45749654/azure-event-grid-failed-retries