0

Is there a clean retry mechanism for EventGrid messages that were successfully delivered, but downstream processes failed and message needs to be sent again?

Example:

  • EventGrid message triggered based on blob upload to Azure Storage
  • EventGrid message in turn, triggers an Azure Function
  • Function receives message
  • Function fails somewhere downstream

Is there a clean way to resend the EventGrid message rather than re-uploading the blob to storage to generate a new message?

Looking for a way to maybe craft and send retry messages for a bunch of blobs?

Something like (pseudocode):

ForEach blob in GET_BLOBS
  - where Modified Timestamp > Today - 1,
  - generate EventGrid message
    {
        "blobUrl":"https://storageaccount.blob.core.windows.net/dir/file.json",
    }
  - send EventGrid message to Function
ericOnline
  • 1,586
  • 1
  • 19
  • 54

1 Answers1

1

I do recommend to read the document Event Grid message delivery and retry.

In the case, when your subscriber invokes a downstream process in the async manner using a PUSH_ACK pattern, the AEG supports also delivering an event message in the PULL pattern, where the delivery target resource is used for saving the event message for its latter pull up based on the needs, for instance: storage queue, etc.

Roman Kiss
  • 7,925
  • 1
  • 8
  • 21
  • Thank you for the link. I read the doc. It addresses only scenarios where message is *not* ACK'd. The PULL pattern you mentioned sounds like the way to go to protect against "lost" messages moving forward. I will research how to implement queue trigger for the Function. – ericOnline Jun 30 '21 at 16:12