Messaging

When is an event not an event?

8 February 2020

Message design in an event-driven architecture can be quite nuanced, especially if you want to achieve any of the benefits of loose coupling that they can be associated with.

When should you write your own message endpoint library?

14 December 2019

Enterprise messaging patterns are complex beasts that often warrant a common implementation across your endpoints. Should you ever be tempted to roll your own?

Messaging anti-patterns in event-driven architecture

12 October 2018

Event-driven integration can improve the scalability, resilience and scalability of distributed applications… but this does depend on the design of your event messages…

Kafka on Azure Event Hub – does it miss too many of the good bits?

10 July 2018

Microsoft have added a Kafka façade to Azure Event Hubs, presumably in the hope of luring Kafka users onto its platform. This makes sense as the platforms have a lot in common, though there are some missing Kafka features that may prove critical.

Handling Protocol Buffers backwards compatibility between versions 2 and 3 using C#

13 November 2016

You will inevitably be pushed towards upgrading your protocol buffer messages to Proto3, particularly if you want a client that supports .Net Standard that .Net Core. This can be done, but there are a couple of speed bumps along the way.

Data design for event-driven architecture: autonomy, encapsulation and ordering

1 February 2016

When you’re implementing an event-driven architecture, the design of your events is absolutely critical to realize the benefits of loose coupling.

Comparing nServiceBus and MassTransit: Do we still need .Net integration frameworks?

26 November 2015

Both nServiceBus and Mass Transit plugged an important gap in Microsoft’s integration landscape, but do they have a role in a future that is likely to be dominated by diverse technologies and autonomous agile teams?

Why REST is not a silver bullet for service integration

4 January 2015

REST is sometimes described as the next evolutionary step in service integration. The problem is that REST provides too much of a dumb pipe to support genuinely decoupled, fault-tolerant service integration.

Don’t assume message ordering in Azure Service Bus

16 December 2014

Azure Service Bus can provide first-in-first-out messaging in theory, but this is not the same as guaranteeing the order in which your messages are processed.

Messaging shouldn’t be used for queries

21 August 2014

When developers first start using messaging they can be tempted to use it as a brand new hammer for every nail. Messaging brings a lot to the party, but it isn’t necessarily a suitable transport for fast, synchronous query processing.

Using a tolerant reader for web service integrations in .Net

22 July 2014

Using version tolerant readers can help you to cope with changes to service contracts though this does come at the expense of a weaker contract. The approach is more appropriate for fluid services that are prone to frequent change.

The problem with tiered or layered architecture

9 July 2014

An architecture based on tiers or layers is too inflexible to deal with the more flexible demands of modern systems, particularly when you working with high-volume systems that require distributed processing.

Eventual consistency and the trade-offs required by distributed development

4 May 2014

Developers who have been brought up on the certainties of ACID transactions often have a problem trusting eventual consistency. Once you start exploring the requirements in more depth this really so much of a handicap.

Writing a brokered messaging client for Azure Service Bus that is production-ready

22 April 2013

Azure’s Brokered Message API provides a basic set of methods that make it easy to start sending and receiving messages through the Azure Service Bus. The problem is that it doesn’t do much to provide some of the basic scaffolding required by a serviceable messaging client.