Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
b3af9c5
feat(aws): add Aspire SQS integration
ReubenBond Aug 23, 2026
f532376
fix(streaming): correct Aspire SQS configuration tests
ReubenBond Aug 23, 2026
4c78e01
fix(streaming): address Aspire SQS review feedback
ReubenBond Aug 23, 2026
ca3508d
test(streaming): use Aspire AppHost for SQS tests
ReubenBond Aug 23, 2026
8fa60df
fix(streaming): avoid Aspire AWS test dependency
ReubenBond Aug 23, 2026
247d580
fix(test): remove Aspire AWS restore dependency
ReubenBond Aug 23, 2026
215421f
test(streaming): persist Aspire SQS subscriptions
ReubenBond Aug 23, 2026
6c79827
fix(streaming): address SQS review feedback
ReubenBond Aug 24, 2026
f6e6d0e
test(streaming): run SQS Aspire tests on net8
ReubenBond Aug 24, 2026
5f8b57a
test(streaming): use core Aspire model on net8
ReubenBond Aug 24, 2026
85390b3
fix(deps): keep Aspire testing net10-only
ReubenBond Aug 24, 2026
b11073d
feat(streaming): provision Aspire SQS with AWS CDK
ReubenBond Aug 24, 2026
01bf815
Revert "feat(streaming): provision Aspire SQS with AWS CDK"
ReubenBond Aug 24, 2026
4fd4263
docs(streaming): provision Aspire SQS with AWS CDK
ReubenBond Aug 24, 2026
fb46f4c
fix(test): use runtime file storage
ReubenBond Aug 25, 2026
5b9a026
fix(streaming): reject conflicting SQS endpoint aliases
ReubenBond Aug 25, 2026
92f4280
chore(docs): remove redundant strong-name suppression
ReubenBond Aug 25, 2026
21e9094
docs(aspire): explain CDK strong-name warning
ReubenBond Aug 25, 2026
b1a9bde
feat(streaming): add first-class Aspire SQS bridge
ReubenBond Aug 26, 2026
6314867
fix(test): consolidate SQS Aspire coverage
ReubenBond Aug 26, 2026
ee7f944
fix(aspire): restore AWS integration dependencies
ReubenBond Aug 28, 2026
9a6d288
fix(ci): map AWS integration packages
ReubenBond Aug 28, 2026
506ea18
docs(streaming): allow unpublished SQS Aspire package
ReubenBond Aug 28, 2026
eed02b5
docs(streaming): defer unpublished Aspire API links
ReubenBond Aug 28, 2026
f1d5a30
fix(test): isolate Aspire AWS environment
ReubenBond Aug 28, 2026
ceceea4
test(streaming): scope SQS Aspire environments
ReubenBond Aug 29, 2026
a45b025
fix(aspire): harden SQS resource configuration
ReubenBond Aug 30, 2026
7f8499d
test(streaming): update Aspire SQS runner
ReubenBond Sep 3, 2026
a8a0700
fix(test): use central testing platform version
ReubenBond Sep 3, 2026
f698786
fix(streaming): reject scheme-less SQS endpoints
ReubenBond Sep 3, 2026
b40181b
fix(streaming): complete Aspire SQS validation
ReubenBond Sep 5, 2026
0db970b
test(aws): serialize SQS environment tests
ReubenBond Sep 5, 2026
42591fd
fix(test): isolate DynamoDB transaction tests
ReubenBond Sep 5, 2026
7a00010
fix(streaming): preserve SQS attribute order
ReubenBond Sep 5, 2026
d037c19
docs(streaming): clarify SQS subscription behavior
ReubenBond Sep 7, 2026
b8574c4
fix(test): remove mismatched Aspire AppHost SDK
ReubenBond Sep 7, 2026
4170ff6
fix(streaming): validate Aspire SQS configuration
ReubenBond Sep 8, 2026
83b8162
fix(streaming): preserve HTTPS endpoint credentials
ReubenBond Sep 11, 2026
95c4189
test(streaming): remove redundant async helpers
ReubenBond Sep 11, 2026
99b167e
fix(aspire): avoid normalized SQS resource collisions
ReubenBond Sep 11, 2026
8f4d5b0
fix(streaming): reject unknown SQS regions
ReubenBond Sep 11, 2026
86244b9
fix(aspire): reject conflicting SQS topology identities
ReubenBond Sep 16, 2026
2874652
style(test): format SQS topology regression options
ReubenBond Sep 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="Amazon.CDK.Lib" Version="2.262.0" />
<PackageVersion Include="Aspire.Azure.Data.Tables" Version="13.0.0" />
<PackageVersion Include="Aspire.Azure.Storage.Blobs" Version="13.0.0" />
<PackageVersion Include="Aspire.Azure.Storage.Queues" Version="13.0.0" />
<PackageVersion Include="Aspire.Hosting.AppHost" Version="13.1.1" />
<PackageVersion Include="Aspire.Hosting.AWS" Version="13.6.0" />
<PackageVersion Include="Aspire.Hosting.Orleans" Version="13.1.1" />
<PackageVersion Include="Aspire.Hosting.Redis" Version="13.1.1" />
<PackageVersion Include="Aspire.StackExchange.Redis" Version="13.1.1" />
Expand Down Expand Up @@ -112,7 +114,7 @@
<PackageVersion Include="System.CommandLine" Version="2.0.0-beta1.21308.1" />
<PackageVersion Include="System.Diagnostics.PerformanceCounter" Version="8.0.1" />
<PackageVersion Include="System.Drawing.Common" Version="8.0.24" />
<PackageVersion Include="System.IO.Hashing" Version="10.0.3" NoWarn="NU5104" />
<PackageVersion Include="System.IO.Hashing" Version="10.0.8" NoWarn="NU5104" />
<PackageVersion Include="System.IO.Pipelines" Version="8.0.0" />
<PackageVersion Include="System.Memory.Data" Version="8.0.1" />
<PackageVersion Include="System.Reactive" Version="6.1.0" />
Expand Down
1 change: 1 addition & 0 deletions Orleans.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@
<Folder Name="/src/Extensions/AWS/">
<Project Path="src/AWS/Orleans.Clustering.DynamoDB/Orleans.Clustering.DynamoDB.csproj" />
<Project Path="src/AWS/Orleans.Journaling.S3/Orleans.Journaling.S3.csproj" />
<Project Path="src/AWS/Orleans.Streaming.SQS.Aspire/Orleans.Streaming.SQS.Aspire.csproj" />
<Project Path="src/AWS/Orleans.Persistence.DynamoDB/Orleans.Persistence.DynamoDB.csproj" />
<Project Path="src/AWS/Orleans.Reminders.DynamoDB/Orleans.Reminders.DynamoDB.csproj" />
<Project Path="src/AWS/Orleans.Streaming.Kinesis/Orleans.Streaming.Kinesis.csproj" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@
<PackageReference Include="Aspire.Hosting.SqlServer" Version="13.4.6" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\..\..\..\..\..\..\..\src\AWS\Orleans.Streaming.SQS.Aspire\Orleans.Streaming.SQS.Aspire.csproj"
IsAspireProjectResource="false" />
</ItemGroup>

<!-- Project references removed - Silo and Client are library projects
used only for the snippet examples. We provide stub IProjectMetadata
types in Projects.cs for compilation. -->
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
using Amazon;
using Aspire.Hosting;
using Aspire.Hosting.Azure;
using Aspire.Hosting.Orleans;

namespace Orleans.Docs.Snippets.Aspire;

Expand All @@ -8,6 +10,41 @@ namespace Orleans.Docs.Snippets.Aspire;

public static class AppHostExamples
{
// <sqs_streaming_apphost>
public static void SqsStreaming(string[] args)
{
var builder = DistributedApplication.CreateBuilder(args);

var aws = builder.AddAWSSDKConfig()
.WithRegion(RegionEndpoint.USEast1);

var orleans = builder.AddOrleans("cluster")
.WithDevelopmentClustering()
.WithMemoryGrainStorage("PubSubStore")
.WithSqsStreaming(
"Orders",
aws,
new SqsStreamingOptions
{
ServiceId = "orders-service",
PartitionCount = 16,
FifoQueue = true,
ReceiveWaitTimeSeconds = 20,
VisibilityTimeoutSeconds = 60,
});

var silo = builder.AddProject<Projects.Silo>("silo")
.WithReference(orleans)
.WithReplicas(3);

builder.AddProject<Projects.Client>("client")
.WithReference(orleans.AsClient())
.WaitFor(silo);

builder.Build().Run();
}
// </sqs_streaming_apphost>

// <basic_orleans_cluster>
public static void BasicOrleansCluster(string[] args)
{
Expand Down Expand Up @@ -263,4 +300,5 @@ public static void ExplicitClusterIds(string[] args)
builder.Build().Run();
}
// </explicit_cluster_ids>

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="10.0.8" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\ServiceDefaults\ServiceDefaults.csproj" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
<PackageReference Include="Microsoft.Orleans.Reminders.AdoNet" Version="10.2.2" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="10.0.8" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\ServiceDefaults\ServiceDefaults.csproj" />
</ItemGroup>
Expand Down
1 change: 1 addition & 0 deletions docs/site/src/content/docs/resources/nuget-packages.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ Use reminders for recurring durable callbacks and durable jobs for scheduled one
| [Microsoft.Orleans.Streaming.NATS](https://www.nuget.org/packages/Microsoft.Orleans.Streaming.NATS) | NATS JetStream streams. |
| [Microsoft.Orleans.Streaming.Redis](https://www.nuget.org/packages/Microsoft.Orleans.Streaming.Redis) | Redis Streams integration. |
| [Microsoft.Orleans.Streaming.SQS](https://www.nuget.org/packages/Microsoft.Orleans.Streaming.SQS) | Amazon SQS streams. |
| [Microsoft.Orleans.Streaming.SQS.Aspire](https://www.nuget.org/packages/Microsoft.Orleans.Streaming.SQS.Aspire) | .NET Aspire and AWS CDK integration for Orleans SQS streams. |
| [Microsoft.Orleans.BroadcastChannel](https://www.nuget.org/packages/Microsoft.Orleans.BroadcastChannel) | Lightweight broadcast channels. |

## Grain directories
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Orleans.Hosting;
using Orleans.Serialization;
using Orleans.Streaming.SQS.Streams;
Expand All @@ -7,6 +8,24 @@ namespace Documentation.Streaming;

internal static class SqsSnippets
{
internal static void ConfigureAspireSilo(string[] args)
{
// <sqs_streaming_silo>
var builder = Host.CreateApplicationBuilder(args);
builder.UseOrleans();
builder.Build().Run();
// </sqs_streaming_silo>
}

internal static void ConfigureAspireClient(string[] args)
{
// <sqs_streaming_client>
var builder = Host.CreateApplicationBuilder(args);
builder.UseOrleansClient();
builder.Build().Run();
// </sqs_streaming_client>
}

internal static void ConfigureSilo(ISiloBuilder siloBuilder)
{
// <configure_sqs_silo>
Expand Down
28 changes: 26 additions & 2 deletions docs/site/src/content/docs/streaming/sqs-streaming.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ ms.topic: how-to

The [`Microsoft.Orleans.Streaming.SQS`](https://www.nuget.org/packages/Microsoft.Orleans.Streaming.SQS) package connects Orleans persistent streams to [Amazon Simple Queue Service](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html). Orleans maps streams across a configurable set of SQS queues, creates a queue when its mapped partition is first used, receives batches through persistent-stream pulling agents, and deletes messages after successful delivery.

SQS streams provide [at-least-once delivery](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/standard-queues-at-least-once-delivery.html). A message becomes visible again when its [visibility timeout](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html) expires before Orleans acknowledges it, so consumers must handle duplicates. The provider assigns receiver-local sequence tokens as messages arrive and doesn't support rewind to an earlier token.
SQS streams provide [at-least-once delivery](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/standard-queues-at-least-once-delivery.html). A message becomes visible again when its [visibility timeout](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html) expires before Orleans acknowledges it, so consumers must handle duplicates. The provider assigns receiver-local sequence tokens as messages arrive, and subscriptions consume current SQS deliveries rather than seeking to an earlier token.

## Configure a standard queue provider

Expand All @@ -25,6 +25,30 @@ Configure each Orleans client which publishes through the provider with the same

The `Service` connection value accepts an AWS region such as `us-east-1` or an SQS-compatible endpoint such as `http://localhost:4566`. With a region, the provider uses the [AWS SDK for .NET credential resolution chain](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/creds-assign.html) when the connection string contains no explicit credentials. Prefer workload credentials such as an IAM role. A protected connection string can supply `AccessKey`, `SecretKey`, and `SessionToken` when the deployment requires explicit temporary credentials.

## Configure SQS streams with Aspire

Install [`Microsoft.Orleans.Streaming.SQS.Aspire`](https://www.nuget.org/packages/Microsoft.Orleans.Streaming.SQS.Aspire) in the AppHost. Install [`Microsoft.Orleans.Streaming.SQS`](https://www.nuget.org/packages/Microsoft.Orleans.Streaming.SQS) in every silo and Orleans client project that uses the provider. The AppHost package's `WithSqsStreaming` extension uses the AWS-supported [`Aspire.Hosting.AWS`](https://www.nuget.org/packages/Aspire.Hosting.AWS) integration to configure AWS SDK for .NET v4 and provision the complete Orleans queue topology through AWS CDK.

Configure the AWS SDK region and one `SqsStreamingOptions` object:

:::code language="csharp" source="../host/snippets/aspire/AppHost/AppHostExamples.cs" id="sqs_streaming_apphost":::

The integration uses those options for both the CDK queue resources and the `Orleans:Streaming:Orders` configuration emitted to every referenced silo and client. The provisioned queue names therefore match the runtime topology exactly. The AWS SDK reference supplies `AWS_PROFILE` and `AWS_REGION`; workload identity and shared AWS configuration remain available through the SDK credential chain.

Provider names are unique ignoring case within each Orleans service. Registration rejects names such as `orders_primary` and `Orders_primary` before changing provider configuration or creating resources. It also checks physical queue ownership across SQS stacks in the same AppHost and region: the service ID, lowercased provider name, partition number, and optional `.fifo` suffix identify each queue. Use distinct service IDs or provider names for separate topologies in the same region, including when AWS profiles select different accounts. Hyphens and underscores remain distinct in physical queue names, so `orders-primary` and `orders_primary` can coexist.

The extension applies the stable service ID and makes each referenced silo and client wait for the CDK stack automatically. The stack uses CloudFormation in the account and region selected by the AWS SDK configuration. Grant the AppHost credentials permission to create and update the stack; bootstrap the environment when added constructs use CDK assets. See [Provisioning application resources with AWS CDK](https://github.com/aws/integrations-on-dotnet-aspire-for-aws/blob/main/src/Aspire.Hosting.AWS/README.md#provisioning-application-resources-with-aws-cdk) for the integration contract.

The silo activates generated `Orleans:Streaming:Orders` configuration through <xref:Microsoft.Extensions.Hosting.OrleansSiloGenericHostExtensions.UseOrleans*>:

:::code language="csharp" source="../snippets/compiled/Streaming/SqsSnippets.cs" id="sqs_streaming_silo":::

The client activates the matching publishing provider through <xref:Microsoft.Extensions.Hosting.OrleansClientGenericHostExtensions.UseOrleansClient*>:

:::code language="csharp" source="../snippets/compiled/Streaming/SqsSnippets.cs" id="sqs_streaming_client":::

For SQS-compatible local services, emit `ServiceEndpoint=http://localhost:9324` in the provider configuration. Provider configuration also accepts `Region`, `ConnectionString`, `ReceiveWaitTimeSeconds`, `VisibilityTimeoutSeconds`, indexed `ReceiveMessageAttributes` and `ReceiveMessageSystemAttributes`, and a keyed `ISQSDataAdapter` through `DataAdapterKey`.

## Preserve per-stream order with FIFO queues

Set <xref:Orleans.Configuration.SqsOptions.FifoQueue> to use SQS FIFO queues:
Expand Down Expand Up @@ -60,7 +84,7 @@ List every application-defined attribute required by the decoder in <xref:Orlean
| <xref:Orleans.Configuration.SqsOptions.ReceiveMessageAttributes> | Requests the application-defined attributes consumed by a custom data adapter. |
| <xref:Orleans.Configuration.SqsOptions.ReceiveMessageSystemAttributes> | Requests SQS system attributes consumed by the provider or application adapter. |

Queue-creation settings apply when the queue is absent. Manage changes to retention, visibility, encryption, access policy, and dead-letter redrive policy through SQS administration for existing queues.
With the Aspire integration, the CDK stack owns queue creation and updates. Define retention, visibility, encryption, access policy, and dead-letter redrive policy in the queue constructs so CloudFormation applies the declared configuration consistently. In non-Aspire hosts, Orleans creates a missing mapped queue when its partition is first used; operators manage subsequent queue-property changes through SQS administration.

Serialized Orleans batches must fit within the [SQS message quotas](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html). Bound batch size before messages approach the service limit, and include custom envelope and message-attribute overhead in that calculation.

Expand Down
3 changes: 2 additions & 1 deletion docs/site/src/content/docs/streaming/stream-providers.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: Orleans stream providers
description: Compare built-in Orleans stream providers by durability, rewindability, status, and prerequisites.
ms.date: 08/18/2026
ms.date: 08/26/2026
ms.topic: concept-article
---

Expand All @@ -18,6 +18,7 @@ A stream provider connects the Orleans streaming API to a transport and defines
| Azure Event Hubs | [`Microsoft.Orleans.Streaming.EventHubs`](https://www.nuget.org/packages/Microsoft.Orleans.Streaming.EventHubs) | Stable | Yes, within Event Hubs retention | Yes | Event Hubs namespace, hub, consumer group, and checkpoint storage |
| Amazon Kinesis | [`Microsoft.Orleans.Streaming.Kinesis`](https://www.nuget.org/packages/Microsoft.Orleans.Streaming.Kinesis) | Stable | Yes, within Kinesis retention | Yes | Kinesis data stream, AWS credentials, region, and durable checkpoint storage |
| Amazon SQS | [`Microsoft.Orleans.Streaming.SQS`](https://www.nuget.org/packages/Microsoft.Orleans.Streaming.SQS) | Stable | Yes, within SQS retention | No | AWS account, queue permissions, region/endpoint configuration |
| Amazon SQS Aspire AppHost | [`Microsoft.Orleans.Streaming.SQS.Aspire`](https://www.nuget.org/packages/Microsoft.Orleans.Streaming.SQS.Aspire) | Stable | Uses the SQS provider's queues | No | .NET Aspire AppHost, AWS CDK, AWS credentials, and region configuration |
| ADO.NET | [`Microsoft.Orleans.Streaming.AdoNet`](https://www.nuget.org/packages/Microsoft.Orleans.Streaming.AdoNet) | **Alpha** | Yes, in relational tables until expiry/dead-letter eviction | No | Supported database, ADO.NET driver, and Orleans streaming SQL schema |
| NATS JetStream | [`Microsoft.Orleans.Streaming.NATS`](https://www.nuget.org/packages/Microsoft.Orleans.Streaming.NATS) | **Alpha** | Configurable; file storage is the default | No | NATS server with JetStream and sufficient storage; subject/stream administration |
| Redis Streams | [`Microsoft.Orleans.Streaming.Redis`](https://www.nuget.org/packages/Microsoft.Orleans.Streaming.Redis) | **Alpha** | Configurable through Redis persistence and stream retention | Yes, while entries remain | Redis deployment, persistence/HA policy, and retention sizing |
Expand Down
1 change: 1 addition & 0 deletions docs/site/src/data/external-link-allowlist.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
"https://docs.aws.amazon.com/streams/latest/dev/introduction.html": "AWS serves this public Kinesis overview to browsers but rejects the bounded automated HEAD/GET probe with HTTP 403.",
"https://www.nuget.org/packages/Microsoft.Orleans.Journaling.S3": "The new S3 journaling package is documented but not yet published; remove this entry and its unpublished API-package entry after publication.",
"https://en.wikipedia.org/wiki/Kalman_filter": "Wikipedia serves this public article to browsers but rejects the bounded automated HEAD/GET probe with HTTP 403.",
"https://www.nuget.org/packages/Microsoft.Orleans.Streaming.SQS.Aspire": "This package is introduced by the current source and will be available when the corresponding Orleans release is published.",
"https://www.f5.com/company/blog/nginx/nginx-power-of-two-choices-load-balancing-algorithm": "The F5 site serves this canonical NGINX article to browsers but rejects the bounded automated HEAD/GET probe with HTTP 403."
}
}
3 changes: 2 additions & 1 deletion docs/site/src/data/unpublished-api-packages.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"description": "Generated API assemblies which are not currently published as standalone NuGet packages.",
"packages": {
"Microsoft.Orleans.Journaling.S3": "The new provider is awaiting its first NuGet publication."
"Microsoft.Orleans.Journaling.S3": "The new provider is awaiting its first NuGet publication.",
"Microsoft.Orleans.Streaming.SQS.Aspire": "This package is introduced by the current source and will be published with the corresponding Orleans release."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageId>Microsoft.Orleans.Streaming.SQS.Aspire</PackageId>
<Title>Microsoft Orleans Aspire integration for AWS SQS Streaming</Title>
<Description>Provisions and configures Orleans SQS stream providers in .NET Aspire AppHost projects.</Description>
<PackageTags>$(PackageTags) Aspire AWS SQS CDK</PackageTags>
<TargetFrameworks>$(DefaultTargetFrameworks)</TargetFrameworks>
<CentralPackageTransitivePinningEnabled>false</CentralPackageTransitivePinningEnabled>
<EnablePackageValidation>false</EnablePackageValidation>
<IsOrleansFrameworkPart>false</IsOrleansFrameworkPart>
</PropertyGroup>

<ItemGroup>
<AssemblyAttribute Remove="Orleans.Metadata.FrameworkPartAttribute" />
<Compile Include="..\Shared\Storage\SqsQueueName.cs" Link="Storage\SqsQueueName.cs" />
<PackageReference Include="Amazon.CDK.Lib" />
<PackageReference Include="Aspire.Hosting.AWS" />
<PackageReference Include="Aspire.Hosting.Orleans" VersionOverride="13.4.6" />
<PackageReference Include="MessagePack" />
</ItemGroup>

<ItemGroup>
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
</Project>
Loading
Loading