Skip to content

Instantly share code, notes, and snippets.

@bh3605
Created August 8, 2025 02:56
Show Gist options
  • Save bh3605/0eb45e3268f39e2e93bff9a19f8691da to your computer and use it in GitHub Desktop.
Save bh3605/0eb45e3268f39e2e93bff9a19f8691da to your computer and use it in GitHub Desktop.
Azurite local ASB testing
// File: AspireNServiceBusExamples.cs
// This file contains sample code snippets demonstrating:
// 1) Using Azurite to emulate Azure Storage Queues locally
// 2) Configuring NServiceBus for local Azurite Storage Queues transport
// 3) Configuring NServiceBus for production Azure Service Bus transport
//
// Note:
// - Azurite is a local Azure Storage emulator you run via npm:
// npm install -g azurite
// azurite --queue
// - Azurite emulates Storage Queues (NOT Azure Service Bus)
// - Make sure Azurite is running before running the local queue examples.
using System;
using System.Threading.Tasks;
using Azure.Storage.Queues;
using NServiceBus;
namespace AspireNServiceBusExamples
{
class Program
{
static async Task Main(string[] args)
{
Console.WriteLine("Choose an example to run:");
Console.WriteLine("1 - Azurite Storage Queue Demo");
Console.WriteLine("2 - NServiceBus Local (Azurite Storage Queues) Endpoint");
Console.WriteLine("3 - NServiceBus Production (Azure Service Bus) Endpoint");
Console.Write("Enter choice (1-3): ");
var choice = Console.ReadLine();
switch (choice)
{
case "1":
await RunAzuriteStorageQueueDemo();
break;
case "2":
await RunNServiceBusLocalEndpoint();
break;
case "3":
RunNServiceBusProductionEndpoint();
break;
default:
Console.WriteLine("Invalid choice.");
break;
}
}
// ----------- Example 1: Azurite Storage Queue Demo -----------
private const string AzuriteConnectionString = "UseDevelopmentStorage=true";
private const string QueueName = "mytestqueue";
static async Task RunAzuriteStorageQueueDemo()
{
Console.WriteLine("Running Azurite Storage Queue Demo...");
// Create a QueueClient to the local Azurite queue
var queueClient = new QueueClient(AzuriteConnectionString, QueueName);
// Create the queue if it doesn't exist
await queueClient.CreateIfNotExistsAsync();
Console.WriteLine($"Queue '{QueueName}' created or already exists.");
// Send a message
await queueClient.SendMessageAsync("Hello from Azurite!");
Console.WriteLine("Sent message.");
// Receive and process messages
var messages = await queueClient.ReceiveMessagesAsync(maxMessages: 5);
foreach (var message in messages.Value)
{
Console.WriteLine($"Received message: {message.MessageText}");
await queueClient.DeleteMessageAsync(message.MessageId, message.PopReceipt);
}
Console.WriteLine("Azurite Storage Queue Demo completed.");
}
// ----------- Example 2: NServiceBus Local Endpoint using Azurite -----------
static async Task RunNServiceBusLocalEndpoint()
{
Console.WriteLine("Starting NServiceBus Endpoint with Azure Storage Queues transport (Azurite)...");
var endpointConfiguration = new EndpointConfiguration("MyLocalEndpoint");
// Use Azure Storage Queues transport for local dev (Azurite)
var transport = endpointConfiguration.UseTransport<AzureStorageQueueTransport>();
transport.ConnectionString(AzuriteConnectionString);
endpointConfiguration.SendFailedMessagesTo("error");
endpointConfiguration.AuditProcessedMessagesTo("audit");
var endpointInstance = await Endpoint.Start(endpointConfiguration)
.ConfigureAwait(false);
Console.WriteLine("NServiceBus Local Endpoint started. Press Enter to stop.");
Console.ReadLine();
await endpointInstance.Stop()
.ConfigureAwait(false);
Console.WriteLine("NServiceBus Local Endpoint stopped.");
}
// ----------- Example 3: NServiceBus Production Endpoint using Azure Service Bus -----------
static void RunNServiceBusProductionEndpoint()
{
Console.WriteLine("Configuring NServiceBus Endpoint with Azure Service Bus transport...");
var endpointConfiguration = new EndpointConfiguration("MyProductionEndpoint");
// Use Azure Service Bus transport in production
var transport = endpointConfiguration.UseTransport<AzureServiceBusTransport>();
// Replace with your Azure Service Bus connection string
string productionConnectionString = "Endpoint=sb://your-namespace.servicebus.windows.net/;SharedAccessKeyName=yourKeyName;SharedAccessKey=yourKey";
transport.ConnectionString(productionConnectionString);
endpointConfiguration.SendFailedMessagesTo("error");
endpointConfiguration.AuditProcessedMessagesTo("audit");
// Starting endpoint synchronously for demo purposes
var endpointInstance = Endpoint.Start(endpointConfiguration).GetAwaiter().GetResult();
Console.WriteLine("NServiceBus Production Endpoint started. Press Enter to stop.");
Console.ReadLine();
endpointInstance.Stop().GetAwaiter().GetResult();
Console.WriteLine("NServiceBus Production Endpoint stopped.");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment