Category Archives: NServiceBus

NServiceBus 5.0 behaviors in action: routing slips

I’ve wrote in the past how routing slips can provide a nice alternative to NServiceBus sagas, using a stateless, upfront approach. In NServiceBus 4.x, it was quite clunky to actually implement them. I had to plug in to two interfaces … Continue reading 

| 6 Comments

Reducing NServiceBus Saga load

When presented with concurrency issues with NServiceBus sagas, you’re generally presented with two options: Relax the transaction isolation level Reduce worker thread count, forcing serialized processing of messages Both of these are generally not a great solution, as neither actually … Continue reading 

| 10 Comments

Saga patterns: wrap up

Posts in this series: Observer pattern Controller pattern Pattern variations Scaling sagas Routing slips NServiceBus sagas are a simple yet flexible tool to achieve a variety of end goals. Whether it’s orchestration, choreography, business activity monitoring, or just other long-running … Continue reading 

Also posted in Messaging | 4 Comments

Saga alternatives – routing slips

In the last few posts on sagas, we looked at a variety of patterns of modeling long-running business transactions. However, the general problem of message routing doesn’t always require a central point of control, such as is provided with the … Continue reading 

Also posted in Messaging | 4 Comments

Scaling NServiceBus Sagas

When looking at NServiceBus sagas (process managers), especially at high volume of messages, we often run into two main problems: Deadlocks Starvation This is because of the fundamental (default) design of sagas is that: A single saga shares a single … Continue reading 

Also posted in Messaging, SOA | 7 Comments

Saga implementation patterns – variations

In the previous couple of posts, I looked at the two main patterns I run into when looking at sagas: Command-oriented (request/response) in the Controller pattern Event-oriented (pub/sub) in the Observer pattern Of course, these aren’t the only ways our … Continue reading 

Also posted in Messaging, SOA | 8 Comments

Saga implementation patterns – Controller

In the previous post on saga implementation patterns, we looked at the Observer pattern. In that pattern, the saga was a passive participant in the business transaction, similar to how many fast food restaurants fulfill orders. But not all food … Continue reading 

Also posted in Messaging, SOA | 18 Comments

Saga implementation patterns – Observer

NServiceBus sagas, itself an implementation of the Process Manager pattern, often takes one of two main forms when implemented. It’s not a cut and dry distinction, but in general, I’ve found that saga implementations typically fall into one or the … Continue reading 

Also posted in Messaging, SOA | 12 Comments

NServiceBus, Semantic Versioning and events

Something that caught us quite off guard when migrating from the 2.6 version of NServiceBus to the 3.x versions was around how NServiceBus treats assembly versions for publishing messages. When a subscriber expresses intent for a subscription of a message … Continue reading 

| 14 Comments

Messaging Semantics: Ownership

In the last post, I covered naming of messages for the different kinds of messages we typically see: Commands Replies Events The names of messages is the first clue I look in to see if boundaries are correct. Often, when … Continue reading 

Also posted in Domain-Driven Design, SOA | 5 Comments