Skip to content

Foundatio.AzureStorage / Foundatio.AzureServiceBus

Foundatio provides Azure implementations for storage, queuing, and messaging using Azure Blob Storage, Azure Storage Queues, and Azure Service Bus. View source on GitHub → | AzureServiceBus

Overview

ImplementationInterfacePackage
AzureFileStorageIFileStorageFoundatio.AzureStorage
AzureStorageQueue<T>IQueue<T>Foundatio.AzureStorage
AzureServiceBusQueue<T>IQueue<T>Foundatio.AzureServiceBus
AzureServiceBusMessageBusIMessageBusFoundatio.AzureServiceBus

Installation

bash
# Azure Storage (Blob, Storage Queues)
dotnet add package Foundatio.AzureStorage

# Azure Service Bus (Queues, Messaging)
dotnet add package Foundatio.AzureServiceBus

AzureFileStorage

Azure Blob Storage file storage.

csharp
using Foundatio.Storage;

var storage = new AzureFileStorage(o =>
{
    o.ConnectionString = connectionString;
    o.ContainerName = "files";
});

await storage.SaveFileAsync("documents/report.pdf", pdfStream);

Configuration

OptionTypeRequiredDefaultDescription
ConnectionStringstringAzure Storage connection string
ContainerNamestring"storage"Blob container name

For additional options, see AzureFileStorageOptions source.

AzureStorageQueue

Azure Storage Queue implementation.

csharp
using Foundatio.Queues;

var queue = new AzureStorageQueue<WorkItem>(o =>
{
    o.ConnectionString = connectionString;
    o.Name = "work-items";
});

await queue.EnqueueAsync(new WorkItem { Data = "Hello" });

Configuration

OptionTypeRequiredDefaultDescription
ConnectionStringstringAzure Storage connection string
DequeueIntervalTimeSpan2sPolling interval

For additional options, see AzureStorageQueueOptions source.

AzureServiceBusQueue

Azure Service Bus queue with advanced features.

csharp
using Foundatio.Queues;

var queue = new AzureServiceBusQueue<WorkItem>(o =>
{
    o.ConnectionString = connectionString;
    o.Name = "work-items";
});

await queue.EnqueueAsync(new WorkItem { Data = "Hello" });

Configuration

OptionTypeRequiredDescription
ConnectionStringstringService Bus connection string
RequiresSessionbool?Enable sessions for ordered processing
RequiresDuplicateDetectionbool?Enable duplicate detection
EnableDeadLetteringOnMessageExpirationbool?DLQ on expiration

For additional options, see AzureServiceBusQueueOptions source.

AzureServiceBusMessageBus

Azure Service Bus pub/sub messaging.

csharp
using Foundatio.Messaging;

var messageBus = new AzureServiceBusMessageBus(o =>
{
    o.ConnectionString = connectionString;
    o.Topic = "events";
    o.SubscriptionName = "my-service";
});

await messageBus.SubscribeAsync<OrderCreated>(async order =>
{
    Console.WriteLine($"Order created: {order.OrderId}");
});

await messageBus.PublishAsync(new OrderCreated { OrderId = 123 });

Configuration

OptionTypeRequiredDescription
ConnectionStringstringService Bus connection string
SubscriptionNamestringSubscription name (unique per consumer)
PrefetchCountint?Message prefetch count

For additional options, see AzureServiceBusMessageBusOptions source.

Next Steps

Released under the Apache 2.0 License.