Skip to content

feat: Add NetEvolve.Pulse.AzureQueueStorage transport package#427

Open
Copilot wants to merge 2 commits intomainfrom
copilot/create-netevolve-pulse-azurequeuestorage
Open

feat: Add NetEvolve.Pulse.AzureQueueStorage transport package#427
Copilot wants to merge 2 commits intomainfrom
copilot/create-netevolve-pulse-azurequeuestorage

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 18, 2026

Adds a new NetEvolve.Pulse.AzureQueueStorage package providing Azure Queue Storage as a Pulse outbox transport — a cheaper alternative to Azure Service Bus available in every Azure Storage account.

New package: NetEvolve.Pulse.AzureQueueStorage

  • Targets: net8.0;net9.0;net10.0
  • Key dependencies: Azure.Storage.Queues, Azure.Identity

Transport behavior

  • QueueClient lazily initialized via SemaphoreSlim double-checked locking; uses connection string or DefaultAzureCredential based on options
  • Messages JSON-serialized → UTF-8 encoded → Base64-encoded before SendMessageAsync
  • Raw payload > 48 KB (64 KB Base64 limit) throws InvalidOperationException
  • SendBatchAsync iterates sequentially
  • Optional auto-queue creation via CreateQueueIfNotExists = true (default)

Registration

// Connection string
services.AddPulse(config => config.UseAzureQueueStorageTransport(
    connectionString: configuration["Storage:ConnectionString"]!
));

// Managed identity
services.AddPulse(config => config.UseAzureQueueStorageTransport(
    queueServiceUri: new Uri("https://myaccount.queue.core.windows.net")
));

Options

Property Default Description
ConnectionString null Azure Storage connection string
QueueServiceUri null Service URI for DefaultAzureCredential auth
QueueName "pulse-outbox" Target queue name
MessageVisibilityTimeout null Per-message visibility timeout
CreateQueueIfNotExists true Auto-create queue on first use

Validation (either ConnectionString or QueueServiceUri required, QueueName non-empty) is registered with ValidateOnStart(). AzureQueueStorageTransportOptionsConfiguration is provided for binding from Pulse:Transports:AzureQueueStorage config section when needed.

Copilot AI changed the title [WIP] Add NetEvolve.Pulse.AzureQueueStorage project with AzureQueueStorageMessageTransport feat: Add NetEvolve.Pulse.AzureQueueStorage transport package Apr 18, 2026
Copilot AI requested a review from samtrion April 18, 2026 07:17
@samtrion samtrion marked this pull request as ready for review April 18, 2026 10:53
@samtrion samtrion requested a review from a team as a code owner April 18, 2026 10:53
Copilot AI and others added 2 commits April 18, 2026 12:53
@samtrion samtrion force-pushed the copilot/create-netevolve-pulse-azurequeuestorage branch from 93594f5 to 06b2787 Compare April 18, 2026 10:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Create NetEvolve.Pulse.AzureQueueStorage project with AzureQueueStorageMessageTransport

2 participants