70 lines
1.8 KiB
C#
70 lines
1.8 KiB
C#
using MassTransit;
|
||
using MassTransitDemo.Consumer.Consumers;
|
||
using MassTransitDemo.Contracts;
|
||
|
||
var builder = WebApplication.CreateBuilder(args);
|
||
|
||
// 添加控制器服务
|
||
builder.Services.AddControllers();
|
||
|
||
// 添加API探索器(用于Swagger)
|
||
builder.Services.AddOpenApi();
|
||
|
||
|
||
// 配置MassTransit和RabbitMQ
|
||
builder.Services.AddMassTransit(x =>
|
||
{
|
||
// 注册所有消费者
|
||
x.AddConsumer<PublishSubscribeConsumer1>();
|
||
x.AddConsumer<PublishSubscribeConsumer2>();
|
||
x.AddConsumer<RequestResponseConsumer>();
|
||
|
||
// 配置RabbitMQ传输
|
||
x.UsingRabbitMq((context, cfg) =>
|
||
{
|
||
// 从配置中读取RabbitMQ连接信息
|
||
var rabbitMqConfig = builder.Configuration.GetSection("RabbitMQ");
|
||
var host = rabbitMqConfig["Host"];
|
||
var port = ushort.Parse(rabbitMqConfig["Port"]!);
|
||
var username = rabbitMqConfig["Username"];
|
||
var password = rabbitMqConfig["Password"];
|
||
var virtualHost = rabbitMqConfig["VirtualHost"];
|
||
|
||
// 配置RabbitMQ主机连接
|
||
cfg.Host(host, port, virtualHost, h =>
|
||
{
|
||
h.Username(username);
|
||
h.Password(password);
|
||
});
|
||
|
||
// 配置消息端点
|
||
cfg.ReceiveEndpoint("publish-subscribe-queue-1", e =>
|
||
{
|
||
e.ConfigureConsumer<PublishSubscribeConsumer1>(context);
|
||
});
|
||
|
||
cfg.ReceiveEndpoint("publish-subscribe-queue-2", e =>
|
||
{
|
||
e.ConfigureConsumer<PublishSubscribeConsumer2>(context);
|
||
});
|
||
|
||
cfg.ReceiveEndpoint("request-response-queue", e =>
|
||
{
|
||
e.ConfigureConsumer<RequestResponseConsumer>(context);
|
||
});
|
||
});
|
||
});
|
||
|
||
var app = builder.Build();
|
||
|
||
app.MapOpenApi();
|
||
app.UseSwaggerUI(options =>
|
||
{
|
||
options.SwaggerEndpoint("/openapi/v1.json", "API v1");
|
||
});
|
||
|
||
// 映射控制器路由
|
||
app.MapControllers();
|
||
|
||
app.Run();
|