<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Deb</title>
    <description>The latest articles on Forem by Deb (@medghosh).</description>
    <link>https://forem.com/medghosh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3859722%2Fe1fb3dd3-92c4-4413-96d4-2ed08210533c.png</url>
      <title>Forem: Deb</title>
      <link>https://forem.com/medghosh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/medghosh"/>
    <language>en</language>
    <item>
      <title>I built a forensic debugger for Azure Service Bus dead-letter queues — here's how it works</title>
      <dc:creator>Deb</dc:creator>
      <pubDate>Fri, 01 May 2026 08:33:50 +0000</pubDate>
      <link>https://forem.com/medghosh/i-built-a-forensic-debugger-for-azure-service-bus-dead-letter-queues-heres-how-it-works-3lip</link>
      <guid>https://forem.com/medghosh/i-built-a-forensic-debugger-for-azure-service-bus-dead-letter-queues-heres-how-it-works-3lip</guid>
      <description>&lt;p&gt;It's 2 AM. Your monitoring fires. &lt;strong&gt;5,000 messages&lt;/strong&gt; in the Dead-Letter Queue.&lt;br&gt;
You need to know three things immediately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What's actually inside those messages&lt;/li&gt;
&lt;li&gt;Which failure pattern caused this&lt;/li&gt;
&lt;li&gt;Which messages are safe to replay right now&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That investigation used to take me 6 hours. It now takes 45 minutes. Not because I got faster — because I built the right tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ServiceHub&lt;/strong&gt; is an open-source, self-hosted web application that treats dead-letter queue debugging as the forensic investigation it actually is.&lt;/p&gt;

&lt;p&gt;Here's what it does that a standard management console cannot:&lt;br&gt;
&lt;strong&gt;Full message body inspection&lt;/strong&gt; — click any message, active or dead-letter, and see the complete JSON with syntax highlighting, every system property, and the exact broker error description.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5b8rb9qn8i5mhiec4qgo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5b8rb9qn8i5mhiec4qgo.png" alt=" " width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Client-side AI pattern detection&lt;/strong&gt; — clusters your DLQ messages into error groups with confidence scores. Runs entirely in your browser. Zero data exfiltration. No API key needed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc2unxrqsytskpu53wouk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc2unxrqsytskpu53wouk.png" alt=" " width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Auto-replay rules&lt;/strong&gt; — define conditions, set rate limits, add exponential backoff. The engine runs autonomously and shows live Pending → Replayed → Success counters.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmoms3687co3ejnu6shfk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmoms3687co3ejnu6shfk.png" alt=" " width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;30-day &lt;strong&gt;DLQ Intelligence&lt;/strong&gt; — persists every scan to local SQLite. Know whether tonight's spike is a new incident or the same pattern from last Tuesday.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9b0zat7fwmhnhva59et8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9b0zat7fwmhnhva59et8.png" alt=" " width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Correlation Explorer&lt;/strong&gt; — paste any Correlation ID and trace that message across every queue, topic, and namespace in one search.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzysmkuuy9d6osre34vip.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzysmkuuy9d6osre34vip.png" alt=" " width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The entire thing is read-only by design. Uses PeekMessagesAsync — your consumers are never affected. Works with Listen permission only.&lt;/p&gt;

&lt;p&gt;bash&lt;br&gt;
git clone &lt;a href="https://github.com/debdevops/servicehub.git" rel="noopener noreferrer"&gt;https://github.com/debdevops/servicehub.git&lt;/a&gt;&lt;br&gt;
cd servicehub &amp;amp;&amp;amp; ./run.sh&lt;/p&gt;

&lt;p&gt;One command. Auto-installs .NET 10 and Node.js. &lt;/p&gt;

&lt;p&gt;Open &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Or try the hosted demo in 30 seconds — no install:&lt;br&gt;
👉 &lt;a href="https://app-servicehub-prod.azurewebsites.net/" rel="noopener noreferrer"&gt;https://app-servicehub-prod.azurewebsites.net/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The hosted version authenticate via Microsoft Entra ID (Azure AD). No user database. No personal data stored. Connection strings AES-GCM encrypted at rest in your session. &lt;/p&gt;

&lt;p&gt;What does your current DLQ investigation workflow look like? Drop it in the comments — I'm genuinely curious what the most painful part still is.&lt;/p&gt;

&lt;p&gt;⭐ GitHub: &lt;a href="https://github.com/debdevops/servicehub" rel="noopener noreferrer"&gt;https://github.com/debdevops/servicehub&lt;/a&gt; — MIT license, PRs welcome.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>azure</category>
      <category>dotnet</category>
      <category>devops</category>
    </item>
    <item>
      <title>I Built a Free Web Tool to Debug Azure Service Bus DLQs Without the 2 AM Headache</title>
      <dc:creator>Deb</dc:creator>
      <pubDate>Fri, 03 Apr 2026 15:58:26 +0000</pubDate>
      <link>https://forem.com/medghosh/i-built-a-free-web-tool-to-debug-azure-service-bus-dlqs-without-the-2-am-headache-1meb</link>
      <guid>https://forem.com/medghosh/i-built-a-free-web-tool-to-debug-azure-service-bus-dlqs-without-the-2-am-headache-1meb</guid>
      <description>&lt;h1&gt;
  
  
  I Built a Free Web Tool to Debug Azure Service Bus DLQs Without the 2 AM Headache
&lt;/h1&gt;

&lt;p&gt;It’s 2 AM. Your pager goes off.&lt;/p&gt;

&lt;p&gt;Azure Service Bus is showing thousands of dead-letter messages, but the Azure Portal only tells you a number. No message content. No failure reasons. No easy way to understand what went wrong or how to safely fix it.&lt;/p&gt;

&lt;p&gt;After experiencing this pain too many times, I decided to build &lt;strong&gt;ServiceHub&lt;/strong&gt; — an open-source web-based forensic debugger for Azure Service Bus.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try It Live — No Installation Needed
&lt;/h3&gt;

&lt;p&gt;I’ve deployed a &lt;strong&gt;free hosted demo&lt;/strong&gt; so you can test it instantly:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://app-servicehub-prod.azurewebsites.net/connect" rel="noopener noreferrer"&gt;→ Try ServiceHub Live Demo&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Just paste your Service Bus connection string and click Connect.&lt;br&gt;&lt;br&gt;
It works safely with just &lt;strong&gt;Listen&lt;/strong&gt; permission (read-only by default).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0mw6jzcadbsnxm5agnks.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0mw6jzcadbsnxm5agnks.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What ServiceHub Gives You
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Full Message Visibility&lt;/strong&gt; — Browse active queues, topics, and subscriptions with complete JSON body, system properties, custom headers, and syntax highlighting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Powerful DLQ Intelligence&lt;/strong&gt; — Persistent history, auto-categorization of failures (Transient, MaxDelivery, Expired, etc.), forensic timeline, trend charts, and export to JSON/CSV.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto-Replay Rules&lt;/strong&gt; — Define smart rules once and automatically replay matching messages with live success statistics and rate limiting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safe Batch Replay&lt;/strong&gt; — Replay multiple messages safely with strong confirmation guards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-Powered Insights&lt;/strong&gt; — Client-side pattern detection and anomaly flagging (no data leaves your browser).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing Tools&lt;/strong&gt; — Built-in Message Generator with realistic scenarios and anomaly injection.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fejtaj2x6vx97krcpmif9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fejtaj2x6vx97krcpmif9.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5lws8fuije7rvdkb8db1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5lws8fuije7rvdkb8db1.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbeh3h7kh03h1ulltiwz9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbeh3h7kh03h1ulltiwz9.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femlpq4c3my4maydjudk2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femlpq4c3my4maydjudk2.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All of this in a clean, modern web interface built with React 18 and .NET 10.&lt;/p&gt;

&lt;h3&gt;
  
  
  Run It Locally (Completely Free &amp;amp; Open Source)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
git clone https://github.com/debdevops/servicehub.git
cd servicehub
./run.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>azure</category>
      <category>devops</category>
      <category>opensource</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
