воскресенье, 24 мая 2026 г.

.Net Aspire, rabbit, redis, AspireDemoApp03

.Net Aspire, rabbit, redis, AspireDemoApp03

------------------------------------------------------------------------------------

rabbit, redis

D:\Projects\VS\2605\Aspire\Qwen\AspireDemoApp02\AspireDemoApp02.slnx

D:\Projects\VS\2605\Aspire\Qwen\AspireDemoApp02\AspireDemoApp02.AppHost\AspireDemoApp.AppHost.csproj

Отсутствует WaitFor

var builder = DistributedApplication.CreateBuilder(args);

var redis = builder.AddRedis("redis");
var rabbitmq = builder.AddRabbitMQ("rabbitmq");

var apiServiceA = builder.AddProject<Projects.AspireDemoApp_ApiServiceA>("apiservicea")
    .WithReference(redis)
    .WithReference(rabbitmq); // <--- ИСПРАВЛЕНИЕ: удаляем .WithEnvironment(...)


var apiServiceB = builder.AddProject<Projects.AspireDemoApp_ApiServiceB>("apiserviceb")
    .WithReference(redis);

builder.AddProject<Projects.AspireDemoApp_WorkerService>("workerservice")
    .WithReference(redis)
    .WithReference(rabbitmq);
try
{

    builder.Build().Run();
}
catch(Exception ex)
{
    Console.WriteLine($"AppHost: Exception: {ex.Message}");
}
-----------------------------------------------------------------------------------------------------------------------------

rabbit, redis
D:\Projects\VS\2605\Aspire\Qwen\AspireDemoApp03\AspireDemoApp03\AspireDemoApp03.slnx
D:\Projects\VS\2605\Aspire\Qwen\AspireDemoApp03\AspireDemoApp03\AspireDemoApp03.AppHost\AppHost.csproj


Работает. Есть WateFor
Не работает Ручка
https://localhost:7052/publish?msg=HelloAspireTest Ответ "✅ Published to 'my-channel': HelloAspireTest"

// AppHost.cs

var builder = DistributedApplication.CreateBuilder(args);

var redis = builder.AddRedis("redis");
var rabbitmq = builder.AddRabbitMQ("rabbitmq")
    // Опционально: уменьшаем логирование контейнера
    .WithEnvironment("RABBITMQ_LOG_LEVEL", "warning");
    // .WithWaitFor("rabbitmq");

var apiServiceA = builder.AddProject<Projects.ApiServiceA>("apiservicea")
    .WithReference(redis)
    .WithReference(rabbitmq)
    .WaitFor(rabbitmq)
    .WaitFor(redis); // <--- ИСПРАВЛЕНИЕ: удаляем .WithEnvironment(...)


var apiServiceB = builder.AddProject<Projects.ApiServiceB>("apiserviceb")
    .WithReference(redis)
    .WaitFor(rabbitmq)
    .WaitFor(redis);

builder.AddProject<Projects.WorkerService>("workerservice")
    .WithReference(redis)
    .WithReference(rabbitmq)
    .WaitFor(rabbitmq)
    .WaitFor(redis);
try
{

    builder.Build().Run();
}
catch (Exception ex)
{
    Console.WriteLine($"AppHost: Exception: {ex.Message}");
}
---------------
Ручка
app.MapPost("/publish/{message}", async (
    string message,
    IConnectionMultiplexer redis,
    ConnectionFactory factory) =>
{
    var db = redis.GetDatabase();
    await db.StringSetAsync("demo:last-message", message);

    await using var connection = await factory.CreateConnectionAsync();
    await using var channel = await connection.CreateChannelAsync();

    await channel.QueueDeclareAsync(
        queue: "demo-queue",
        durable: false,
        exclusive: false,
        autoDelete: false,
        arguments: null);

    var body = Encoding.UTF8.GetBytes(message);

    await channel.BasicPublishAsync(
        exchange: string.Empty,
        routingKey: "demo-queue",
        body: body);

    return Results.Ok(new
    {
        published = message,
        redisKey = "demo:last-message",
        queue = "demo-queue"
    });
});

Комментариев нет:

Отправить комментарий