队列没有在 Rabbitmq 中显示
Queue does not showing in Rabbitmq
我有两个独立的服务,一个叫 Teacher.API 和 Process.API。教师服务生成 POST 请求,教师详细信息将根据我的需要发送到流程服务中。
这就是我在两种服务中配置 MassTrasit 的方式。
在Teacher.API
services.AddMassTransit(x =>
{
x.UsingRabbitMq((context, config) =>
{
config.Host(new Uri("rabbitmq://localhost"), h =>
{
h.Username("guest");
h.Password("guest");
});
});
});
并在 Process.API.
services.AddMassTransit(x =>
{
x.AddConsumer<TeacherConsumer>();
x.UsingRabbitMq((context, cfg) =>
{
cfg.Host(new Uri("rabbitmq://localhost"), h =>
{
h.Username("guest");
h.Password("guest");
});
cfg.ReceiveEndpoint("teacherQueue", ep =>
{
ep.PrefetchCount = 16;
ep.UseMessageRetry(r => r.Interval(2, 100));
ep.ConfigureConsumer<TeacherConsumer>(context);
});
});
});
而在教师控制器中,我的POST请求如下,
[HttpPost]
public async Task<IActionResult> Registraion(Teacher Teacher)
{
if (Teacher != null)
{
Teacher.BookedOn = DateTime.Now;
Uri uri = new Uri("rabbitmq://localhost/teacherQueue");
var endPoint = await _bus.GetSendEndpoint(uri);
await endPoint.Send(Teacher);
return Ok();
}
return BadRequest();
}
这里我正在创建一个新的 teacherQueue
队列并推送 Teacher 对象。
我的问题是,RabbitMQ 管理插件在队列部分没有显示 teacherQueue
,但在交换中显示。
我的消费部分如下,这个消费也打不中
public class TeacherConsumer : IConsumer<Teacher>
{
public Task Consume(ConsumeContext<Teacher> context)
{
var data = context.Message;
return Task.CompletedTask;
}
}
有什么原因吗?我做错了什么?
您缺少 AspNetCore 包,并且调用:
services.AddMassTransitHostedService();
实际上启动了总线。
我有两个独立的服务,一个叫 Teacher.API 和 Process.API。教师服务生成 POST 请求,教师详细信息将根据我的需要发送到流程服务中。
这就是我在两种服务中配置 MassTrasit 的方式。
在Teacher.API
services.AddMassTransit(x =>
{
x.UsingRabbitMq((context, config) =>
{
config.Host(new Uri("rabbitmq://localhost"), h =>
{
h.Username("guest");
h.Password("guest");
});
});
});
并在 Process.API.
services.AddMassTransit(x =>
{
x.AddConsumer<TeacherConsumer>();
x.UsingRabbitMq((context, cfg) =>
{
cfg.Host(new Uri("rabbitmq://localhost"), h =>
{
h.Username("guest");
h.Password("guest");
});
cfg.ReceiveEndpoint("teacherQueue", ep =>
{
ep.PrefetchCount = 16;
ep.UseMessageRetry(r => r.Interval(2, 100));
ep.ConfigureConsumer<TeacherConsumer>(context);
});
});
});
而在教师控制器中,我的POST请求如下,
[HttpPost]
public async Task<IActionResult> Registraion(Teacher Teacher)
{
if (Teacher != null)
{
Teacher.BookedOn = DateTime.Now;
Uri uri = new Uri("rabbitmq://localhost/teacherQueue");
var endPoint = await _bus.GetSendEndpoint(uri);
await endPoint.Send(Teacher);
return Ok();
}
return BadRequest();
}
这里我正在创建一个新的 teacherQueue
队列并推送 Teacher 对象。
我的问题是,RabbitMQ 管理插件在队列部分没有显示 teacherQueue
,但在交换中显示。
我的消费部分如下,这个消费也打不中
public class TeacherConsumer : IConsumer<Teacher>
{
public Task Consume(ConsumeContext<Teacher> context)
{
var data = context.Message;
return Task.CompletedTask;
}
}
有什么原因吗?我做错了什么?
您缺少 AspNetCore 包,并且调用:
services.AddMassTransitHostedService();
实际上启动了总线。