Skip to content
kc@kumarChandrachooda.com:~$ cd /blog/archive && read --section="top" 0%
Archive

Every article

Newest first, grouped by year. Search or filter by topic.

  • 556 articles
  • 67 matching
Microservices 07 Oct 2025

Three Ages of a Domain Model

Same framework, same four-project layout, three maturities - Parcels publishes from handlers, Orders raises events and maps them inline, Availability runs a full pipeline. The lineage made diffable.

Microservices 29 Sep 2025

One Shop, Two Front Doors

DShop's gateway reads over HTTP and writes over a message bus - two dispatch mechanisms behind one controller. Reading it shows how a gateway can be a router and a publisher at the same time.

Microservices 27 Sep 2025

Swap the Dispatcher for a Bus

The monolith and the microservices share the same command names. Decomposition here was one substitution - resolve a local handler, or publish to a broker - and reading both dispatchers shows exactly what changes.

Microservices 21 Sep 2025

Idempotency Aspired, Not Enforced

DShop runs competing consumers over an at-least-once bus with no message-id dedup, so a redelivered reservation decrements stock twice - the estate aspires to idempotency and enforces none of it. Part 9 of Nine Services and a Message Bus.

Microservices 20 Sep 2025

One Orchestrator Subscribes to Everything

Operations subscribes to every command and event in the estate by reflection and routes them through two open-generic handlers - a neat trick with one dead limb the wiring can never light. Part 8 of Nine Services and a Message Bus.

Microservices 17 Sep 2025

OrderCreated in Three Shapes

The same event is declared three times across DShop, and one copy quietly drops a field - here is the contract drift in the real source and the canonical-model cure that would have caught it. Part 3 of Nine Services and a Message Bus.

Microservices 16 Sep 2025

Nine Services and a Message Bus

DShop is one e-commerce shop stamped out as nine microservices over RabbitMQ - this series reads the real source to see how the topology holds together and where it drifts. Part 1 of Nine Services and a Message Bus.

.NET 08 Sep 2025

The Retry Path Nobody Took

A complete broker-requeue retry implementation sits in DShop.Common's subscriber, fully written and never called - and its comment explains exactly why.

.NET 07 Sep 2025

Rejected Events — a Two-Lane Error Taxonomy

DShop.Common decides a message's fate from the type of exception a handler throws - domain failures become events, infrastructure failures get retried.

.NET 06 Sep 2025

Command or Event, Enforced by Convention

In DShop.Common a command and an event are published by identical code - the difference between them is a marker interface and a promise nothing enforces.

.NET 05 Sep 2025

Queue Names Are the Whole Topology

One naming class in DShop.Common decides every exchange, routing key and queue in the estate - the message topology is a string-formatting problem.

.NET 05 Sep 2025

The Framework Before the Framework

DShop.Common is the shared library nine microservices were built on - and the rough draft of a framework its authors later shipped as Convey.

.NET 06 Jul 2025

Commands and Events on the Wire

Convey's broker-CQRS bridge is seventy lines of code that make the same handler serve local dispatch and RabbitMQ delivery — one line per subscription, correlation context riding along for free.

.NET 06 Jul 2025

The Outbox That Keeps Your Events Honest

Save the order, publish the event, crash in between - the dual-write problem, and how Convey's outbox and inbox turn at-least-once messaging into something you can build a business on.

.NET 05 Jul 2025

Retries, Dead Letters, and the Plugin Chain

What Convey's RabbitMQ subscriber actually does when your handler throws - fixed-interval retries, an exception-to-message escape hatch, a dlx- safety net, and one plugin that can quietly defeat all of it.

.NET 04 Jul 2025

A Message Broker Behind an Interface

Convey's messaging abstraction is two interfaces and an attribute - and the naming conventions underneath them quietly turn your C# class names into a public wire contract.

.NET 04 Jul 2025

RabbitMQ by Convention

How Convey's RabbitMQ package turns a class name into an exchange, a routing key and a queue - two eager connections, a channel per thread, and a topology you never declare by hand.