Skip to main content Skills Marktplatz Entdecken und erkunden Sie KI-Skills, die von der Community erstellt wurden.
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Prompt kopierenPrompt-Details anzeigen Ein direkter Befehl überspringt den Prüf-Prompt. Prüfen Sie die Quelle, bevor Sie ihn ausführen.
npx skills add https://github.com/phoroth/AGENTIC --skill azure-servicebus-dotnetDer Befehl bleibt in einer Zeile. Scrollen Sie horizontal, um ihn vor dem Kopieren vollständig zu prüfen.
Sie bevorzugen eine lokale Kopie? Laden Sie die Dateien herunter, die SkillsMP derzeit vorliegen.
ZIP herunterladen Herunterladen... Mehr aus diesem Repository
Verwandte Berufe SOC
Basierend auf der SOC-Berufsklassifikation
name azure-servicebus-dotnet description Azure Service Bus SDK for .NET. Enterprise messaging with queues, topics, subscriptions, and sessions. risk unknown source community date_added 2026-02-27
Azure.Messaging.ServiceBus (.NET)
Enterprise messaging SDK for reliable message delivery with queues, topics, subscriptions, and sessions.
Installation
dotnet add package Azure.Messaging.ServiceBus
dotnet add package Azure.Identity
Current Version : v7.20.1 (stable)
Enprojectnment Variables
AZURE_SERVICEBUS_FULLY_QUALIFIED_NAMESPACE=<namespace>.servicebus.windows.net
AZURE_SERVICEBUS_CONNECTION_STRING=Endpoint=sb://...
Authentication
Microsoft Entra ID (Recommended)
using Azure.Identity;
using Azure.Messaging.ServiceBus;
string fullyQualifiedNamespace = "<namespace>.servicebus.windows.net" ;
ServiceBusClient client = (fullyQualifiedNamespace, DefaultAzureCredential());
await
using
new
new
Connection String string connectionString = "<connection_string>" ;
await using ServiceBusClient client = new (connectionString);
ASP.NET Core Dependency Injection services.AddAzureClients(builder =>
{
builder.AddServiceBusClientWithNamespace("<namespace>.servicebus.windows.net" );
builder.UseCredential(new DefaultAzureCredential());
});
Client Hierarchy ServiceBusClient
├── CreateSender(queueOrTopicName) → ServiceBusSender
├── CreateReceiver(queueName) → ServiceBusReceiver
├── CreateReceiver(topicName, subName) → ServiceBusReceiver
├── AcceptNextSessionAsync(queueName) → ServiceBusSessionReceiver
├── CreateProcessor(queueName) → ServiceBusProcessor
└── CreateSessionProcessor(queueName) → ServiceBusSessionProcessor
ServiceBusAdministrationClient (separate client for CRUD)
Core Workflows
1. Send Messages await using ServiceBusClient client = new (fullyQualifiedNamespace, new DefaultAzureCredential());
ServiceBusSender sender = client.CreateSender("my-queue" );
ServiceBusMessage message = new ("Hello world!" );
await sender.SendMessageAsync(message);
using ServiceBusMessageBatch batch = await sender.CreateMessageBatchAsync();
if (batch.TryAddMessage(new ServiceBusMessage("Message 1" )))
{
}
if (batch.TryAddMessage(new ServiceBusMessage("Message 2" )))
{
}
await sender.SendMessagesAsync(batch);
2. Receive Messages ServiceBusReceiver receiver = client.CreateReceiver("my-queue" );
ServiceBusReceivedMessage message = await receiver.ReceiveMessageAsync();
string body = message.Body.ToString();
Console.WriteLine(body);
await receiver.CompleteMessageAsync(message);
IReadOnlyList<ServiceBusReceivedMessage> messages = await receiver.ReceiveMessagesAsync(maxMessages: 10 );
foreach (var msg in messages)
{
Console.WriteLine(msg.Body.ToString());
await receiver.CompleteMessageAsync(msg);
}
3. Message Settlement
await receiver.CompleteMessageAsync(message);
await receiver.AbandonMessageAsync(message);
await receiver.DeferMessageAsync(message);
await receiver.DeadLetterMessageAsync(message, "InvalidFormat" , "Message body was not valid JSON" );
4. Background Processing with Processor ServiceBusProcessor processor = client.CreateProcessor("my-queue" , new ServiceBusProcessorOptions
{
AutoCompleteMessages = false ,
MaxConcurrentCalls = 2
});
processor.ProcessMessageAsync += async (args ) =>
{
try
{
string body = args .Message.Body.ToString();
Console.WriteLine($"Received: {body} " );
await args .CompleteMessageAsync(args .Message);
}
catch (Exception ex)
{
Console.WriteLine($"Error processing: {ex.Message} " );
await args .AbandonMessageAsync(args .Message);
}
};
processor.ProcessErrorAsync += (args ) =>
{
Console.WriteLine($"Error source: {args .ErrorSource} " );
Console.WriteLine($"Entity: {args .EntityPath} " );
Console.WriteLine($"Exception: {args .Exception} " );
return Task.CompletedTask;
};
await processor.StartProcessingAsync();
await processor.StopProcessingAsync();
5. Sessions (Ordered Processing)
ServiceBusMessage message = new ("Hello" )
{
SessionId = "order-123"
};
await sender.SendMessageAsync(message);
ServiceBusSessionReceiver receiver = await client.AcceptNextSessionAsync("my-queue" );
ServiceBusSessionReceiver receiver = await client.AcceptSessionAsync("my-queue" , "order-123" );
await receiver.SetSessionStateAsync(new BinaryData("processing" ));
BinaryData state = await receiver.GetSessionStateAsync();
await receiver.RenewSessionLockAsync();
6. Dead Letter Queue
ServiceBusReceiver dlqReceiver = client.CreateReceiver("my-queue" , new ServiceBusReceiverOptions
{
SubQueue = SubQueue.DeadLetter
});
ServiceBusReceivedMessage dlqMessage = await dlqReceiver.ReceiveMessageAsync();
string reason = dlqMessage.DeadLetterReason;
string description = dlqMessage.DeadLetterErrorDescription;
Console.WriteLine($"Dead letter reason: {reason} - {description} " );
7. Topics and Subscriptions
ServiceBusSender topicSender = client.CreateSender("my-topic" );
await topicSender.SendMessageAsync(new ServiceBusMessage("Broadcast message" ));
ServiceBusReceiver subReceiver = client.CreateReceiver("my-topic" , "my-subscription" );
var message = await subReceiver.ReceiveMessageAsync();
8. Administration (CRUD) var adminClient = new ServiceBusAdministrationClient(
fullyQualifiedNamespace,
new DefaultAzureCredential());
var options = new CreateQueueOptions("my-queue" )
{
MaxDeliveryCount = 10 ,
LockDuration = TimeSpan.FromSeconds(30 ),
RequiresSession = true ,
DeadLetteringOnMessageExpiration = true
};
QueueProperties queue = await adminClient.CreateQueueAsync(options);
queue.LockDuration = TimeSpan.FromSeconds(60 );
await adminClient.UpdateQueueAsync(queue);
await adminClient.CreateTopicAsync(new CreateTopicOptions("my-topic" ));
await adminClient.CreateSubscriptionAsync(new CreateSubscriptionOptions("my-topic" , "my-subscription" ));
await adminClient.DeleteQueueAsync("my-queue" );
9. Cross-Entity Transactions var options = new ServiceBusClientOptions { EnableCrossEntityTransactions = true };
await using var client = new ServiceBusClient(connectionString, options);
ServiceBusReceiver receiverA = client.CreateReceiver("queueA" );
ServiceBusSender senderB = client.CreateSender("queueB" );
ServiceBusReceivedMessage receivedMessage = await receiverA.ReceiveMessageAsync();
using (var ts = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
{
await receiverA.CompleteMessageAsync(receivedMessage);
await senderB.SendMessageAsync(new ServiceBusMessage("Forwarded" ));
ts.Complete();
}
Key Types Reference Type Purpose ServiceBusClientMain entry point, manages connection ServiceBusSenderSends messages to queues/topics ServiceBusReceiverReceives messages from queues/subscriptions ServiceBusSessionReceiverReceives session messages ServiceBusProcessorBackground message processing ServiceBusSessionProcessorBackground session processing ServiceBusAdministrationClientCRUD for queues/topics/subscriptions ServiceBusMessageMessage to send ServiceBusReceivedMessageReceived message with metadata ServiceBusMessageBatchBatch of messages
Best Practices
Use singletons — Clients, senders, receivers, and processors are thread-safe
Always dispose — Use await using or call DisposeAsync()
Dispose order — Close senders/receivers/processors first, then client
Use DefaultAzureCredential — Prefer over connection strings for production
Use processors for background work — Handles lock renewal automatically
Use safe batching — CreateMessageBatchAsync() and TryAddMessage()
Handle transient errors — Use ServiceBusException.Reason
Configure transport — Use AmqpWebSockets if ports 5671/5672 are blocked
Set appropriate lock duration — Default is 30 seconds
Use sessions for ordering — FIFO within a session
Error Handling try
{
await sender.SendMessageAsync(message);
}
catch (ServiceBusException ex) when (ex.Reason == ServiceBusFailureReason.ServiceBusy)
{
}
catch (ServiceBusException ex)
{
Console.WriteLine($"Service Bus Error: {ex.Reason} - {ex.Message} " );
}
Related SDKs SDK Purpose Install Azure.Messaging.ServiceBusService Bus (this SDK) dotnet add package Azure.Messaging.ServiceBusAzure.Messaging.EventHubsEvent streaming dotnet add package Azure.Messaging.EventHubsAzure.Messaging.EventGridEvent routing dotnet add package Azure.Messaging.EventGrid
Reference Links
When to Use This skill is applicable to execute the workflow or actions described in the overview.
Limitations
Use this skill only when the task clearly matches the scope described above.
Do not treat the output as a substitute for enprojectnment-specific validation, testing, or expert review.
Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.