Created
August 8, 2025 02:56
-
-
Save bh3605/0eb45e3268f39e2e93bff9a19f8691da to your computer and use it in GitHub Desktop.
Azurite local ASB testing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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