代码之家  ›  专栏  ›  技术社区  ›  Sachith Wickramaarachchi

队列未显示在Rabbitmq中

  •  0
  • Sachith Wickramaarachchi  · 技术社区  · 3 年前

    我有两个独立的服务,一个叫老师。API和工艺。API教师服务生成POST请求,教师详细信息将根据我的需要发送到Process service。

    这就是我在两个服务中配置MassTrasit的方式。

    在中 教师API

    services.AddMassTransit(x =>
    {
        x.UsingRabbitMq((context, config) =>
        {
            config.Host(new Uri("rabbitmq://localhost"), h =>
            {
                h.Username("guest");
                h.Password("guest");
            });
        });
    });
    

    并且在 过程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 排队并推送教师对象。

    我的问题是,RabbitMQ管理插件没有显示 教师队列 在队列部分,但在Exchange中显示。

    enter image description here

    enter image description here

    我的消费者部分如下,这个消费者也没有受到打击。

    public class TeacherConsumer : IConsumer<Teacher>
    {
        public Task Consume(ConsumeContext<Teacher> context)
        {
            var data = context.Message;
            return Task.CompletedTask;
        }
    }
    

    有什么原因吗?我做错了什么?

    1 回复  |  直到 3 年前
        1
  •  1
  •   Chris Patterson    3 年前

    您缺少AspNetCore包,以及对以下内容的调用:

    services.AddMassTransitHostedService();
    

    这实际上启动了公共汽车。