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 

Posted in Messaging, NServiceBus, 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 

Posted in Messaging, NServiceBus, SOA | 7 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 

Posted in Messaging, NServiceBus, SOA | 18 Comments

Elaborating on “it depends”

On the discussion on “When should I test?”, I followed up with a conversation: When it provides value. When is that? It depends. And it truly does depend. But upon what? That’s trickier to answer – and there is no … Continue reading 

Posted in Agile, TDD | 5 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 

Posted in Messaging, NServiceBus, SOA | 12 Comments

When should you test?

When it provides value. When is that? It depends. I wish it were simpler than “it depends” but this is unfortunately the truth. Our profession isn’t surgery. It isn’t engineering. It isn’t painting. It isn’t sculpture. It isn’t carpentry. It … Continue reading 

Posted in Rant | 18 Comments

Serialization madness, Unicode edition

Yesterday we were debugging an issue in XML serialization where only a portion of the document was getting deserialized before we encountered an error. It was a strange error, where it looked like when reading the XML the XML document … Continue reading 

Posted in Rant | 1 Comment

Internal versus external events

Inevitably, for those building event-driven architectures (or even message-based architectures), the need arises to publish events to some outside consumer. This consumer could be another solution built by the same team, an adjacent team, or consumers outside the firewall boundary. … Continue reading 

Posted in Domain-Driven Design, SOA | 4 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 

Posted in NServiceBus | 14 Comments

FizzBuzz is dead. Long live FizzBuzz!

UPDATE: It seems I was describing an out of date process, this is what we did a few months ago. Talking to folks doing interviews, we went back to live coding the Fizz Buzz exercise. Doing Fizz Buzz as a … Continue reading 

Posted in Process | 20 Comments