Microsoft has announced multiple updates to Azure Event Grid, which allows for creating event-driven application architectures. The announcement includes features around retry policies, dead lettering capabilities, Azure Storage Queues and Hybrid Connections as a destination for events, and a manual validation handshake.
With Azure Event Grid developers can create reactive applications for handling events from a wide variety of sources, similar to Amazon's Simple Notification Service. These sources include services such as Azure Storage and Service Bus, or even custom topics. Subsequently, Azure Event Grid is then able to push these events to several different event handlers, such as Azure Functions or Logic Apps, which in turn can start their processes as needed.
Source: https://docs.microsoft.com/en-us/azure/event-grid/overview
These announced features that were previously in preview, and have now entered general availability, exposed through the 2019-01-01 API and SDKs. According to Bahram Banisadr, program manager, Event Grid, they "enable you to build more sophisticated, performant, and stable event-driven applications in Azure". For example, with the newly announced retry policies Event Grid implements a backoff retry policy, which will retry sending of failed messages in an exponentially increasing interval.
It is also possible to create a custom retry policy on the creation of a subscription. Closely related to retry policies, Event Grid now also includes dead lettering capabilities, which allows sending of messages to Azure Blob Storage which either could not be delivered (even after retries), or when receiving a 400 (Bad Request) or 413 (Request Entity Too Large) response code. Furthermore, it is also possible to emit events whenever a message is being dead lettered, allowing you to set up an automated process around this as well.
Event handlers are an essential piece in the architecture of Azure Event Grid, as this is where the processing of the emitted events takes place. Therefore, the introduction of two new destinations expands significantly on the capabilities of Event Grid. First, there is the addition of Azure Storage Queues, allowing events to be queued up for later processing. This helps in setting up a decoupled architecture, where the receiving system can process the events from the queue at their own pace, as described by Lovisa Johansson, system developer:
Message queues decouple your processes. All that is required is that the sender and the receiver agree on a common format for messages and their content and that they are using the same message broker. When part of your architecture fails, it doesn't need to take the entire system down with it. Messages can still be added to the queue and be processed when the system has recovered. If a message fails to be delivered, the message can be redelivered until the message is processed.
On the other hand, using Hybrid Connections as an event handler allows to pass events to on-premises clients, even when these are secured behind a firewall. This is done by creating an outgoing connection from the client and exposing this as an HTTP endpoint in Azure. The final feature which Microsoft announced is the manual validation handshake, used when an event handler does not have the capability to provide the correct validation response to calls from Event Grid. Instead, this new capability sends along a URL in the validation event, which the receiver can then manually call, and thus confirming their ownership of the endpoint.