Aspire, AspireRedisPubSub, Publish, Interaction,Qwen
https://chat.qwen.ai/c/806431e5-714d-4729-9a3f-90e4dc82a139
D:\Projects\VS\2605\Qwen\AspireRedisPubSub\AspireRedisPubSub.slnx
D:\Projects\VS\2605\Qwen\AspireRedisPubSub\AspireRedisPubSub.AppHost\AspireRedisPubSub.AppHost.csproj
ServiceA
builder.AddRedisClient("redis");
var app = builder.Build();
app.MapGet("/publish", async (IConnectionMultiplexer redis, string? msg) =>
{
// var channel = "my-channel";
var channel = RedisChannel.Literal("my-channel");
// RedisChannel.Pattern("my-channel:*");
var message = msg ?? "Hello from ServiceA!";
// Получаем объект подписки из мультиплексора
var subscriber = redis.GetSubscriber();
await subscriber.PublishAsync(channel, message);
return Results.Ok($"✅ Published to '{channel}': {message}");
});
app.MapDefaultEndpoints(); // для health checks
app.Run();
---------------------------------------------
ServiceB
// Подписываемся после успешного пинга (используем RedisChannel.Literal)
await subscriber.SubscribeAsync(RedisChannel.Literal("my-channel"), (channel, message) =>
{
logger.LogInformation("📩 ServiceB received: {Message}", message);
});