EIP – Polling Consumer

A polling consumer design pattern is a software architecture pattern commonly used in messaging systems, where a client application polls a message queue or a data source periodically to check…

Differences between AMQP 1.0 vs. 0.91 Protocol

AMQP 1.0 (Advanced Message Queuing Protocol) is an open-source, binary wire protocol designed to provide a messaging backbone for distributed applications. It is designed to provide reliable, secure and robust…

Point-to-Point Messaging using Azure Service Bus Queues

Here is a quick snippet of code demonstrating how Point-to-point messaging works with Azure Service Bus and the Microsoft Dataverse. The Microsoft Dataverse emits a message that is pushed into…

EIP – Application Adapter Design Pattern

Some legacy applications often communicate messages in proprietary formats, or messages the Receiver application needs to translate to make sense of. EDIFACT, X12 are common formats that often require translation/transformation.…

Event-driven Architecture using C# Observer Pattern

The Observer design pattern is a useful pattern when combined with Event-driven architectures to create reactive systems. A source system emits a state change; this change is observed by methods…

Interface Definition Document

In this post, I’ve provided a sample Interface Definition Document.

EIP – Event-Driven Consumers

In Enterprise Integrations there are many types of messages that a Sender will send to a Receiver. These can broadly be categorised as Command, Event and Query messages. In most…

EIP – Message Delivery Guarantee Models

This post summarises the various Delivery Guarantees available in Azure Service Bus.

Message Schema

This page provides details to implement the Azure Service Bus Message Schema. The properties have been extracted from the official Microsoft Azure Source.

EIP – Queue-Based Load Levelling Pattern

In a Point-to-point integration, a Sender may overwhelm the Receiver by sending large volumes of messages that the Receiver cannot process. One option here is to use the Competing Consumer…