<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel><title>Messaging in .NET — Trust is earned, not given</title><link>https://www.bobhuang.com/series/messaging-in-dotnet/</link><description>The same order pipeline built three times, for a reader who has never used a message broker: Kafka as the log you read, Redis Streams as the log you may already be running, and RabbitMQ as the router that pushes.</description><language>en</language><lastBuildDate>30 Sep 2026 12:00:00 GMT</lastBuildDate><atom:link href="https://www.bobhuang.com/series/messaging-in-dotnet/feed.xml" rel="self" type="application/rss+xml"/><item><title>Messaging in .NET, part 3: Kafka and RabbitMQ side by side, or a queue is not a log</title><link>https://www.bobhuang.com/blog/1047/kafka-vs-rabbitmq-same-pipeline-twice/</link><guid>https://www.bobhuang.com/blog/1047/kafka-vs-rabbitmq-same-pipeline-twice/</guid><pubDate>30 Sep 2026 12:00:00 GMT</pubDate><description>Parts one and two built the same order pipeline twice, and both times the answer to "how do I retry with a delay?" was "build it yourself". This article builds…</description></item><item><title>Messaging in .NET, part 2: Redis Streams, or the message log you may already be running</title><link>https://www.bobhuang.com/blog/1046/redis-streams-messaging-in-dotnet-beginners/</link><guid>https://www.bobhuang.com/blog/1046/redis-streams-messaging-in-dotnet-beginners/</guid><pubDate>10 Feb 2026 12:00:00 GMT</pubDate><description>In part 1 we put a broker between two programs and learned the two rules that govern every message system: the reader remembers how far it has read, and it…</description></item><item><title>Messaging in .NET, part 1: Kafka, or how two programs talk without knowing each other</title><link>https://www.bobhuang.com/blog/1045/kafka-messaging-in-dotnet-beginners/</link><guid>https://www.bobhuang.com/blog/1045/kafka-messaging-in-dotnet-beginners/</guid><pubDate>15 Jul 2025 12:00:00 GMT</pubDate><description>Sooner or later you write two programs that need to talk. One takes an order from a customer; another one has to charge a card and update inventory. The…</description></item></channel></rss>