Aspire 集成 Dapr 和 RabbitMQ

This commit is contained in:
administrator committed 2024-10-11 21:30:57 +08:00
1 parent 16386a8ea5
commit 81d8f1b3f9
5 files changed
+95 -6

No files matched your search

@@ -0,0 +1,30 @@
// Copyright (c) HelloShop Corporation. All rights reserved.
// See the license file in the project root for more information.
using Aspire.Hosting.Dapr;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HelloShop.AppHost.Extensions
{
public static class DaprSidecarResourceBuilderExtensions
{
public static IResourceBuilder<IDaprSidecarResource> WithReference(this IResourceBuilder<IDaprSidecarResource> builder, IResourceBuilder<IResourceWithConnectionString> resourceBuilder, int waitInSeconds = 5)
{
builder.WithAnnotation(new EnvironmentCallbackAnnotation(async context =>
{
var notificationService = context.ExecutionContext.ServiceProvider.GetRequiredService<ResourceNotificationService>();
await notificationService.WaitForResourceAsync(resourceBuilder.Resource.Name, KnownResourceStates.Running);
await Task.Delay(TimeSpan.FromSeconds(waitInSeconds));
var connectionStringName = resourceBuilder.Resource.ConnectionStringEnvironmentVariable ?? $"ConnectionStrings__{resourceBuilder.Resource.Name}";
context.EnvironmentVariables[connectionStringName] = new ConnectionStringReference(resourceBuilder.Resource, false);
}));
return builder;
}
}
}