【问题标题】:RabbitMQ-MassTransit ReceiveEndPoint not able to listen to the Queue in .net core web APIsRabbitMQ-MassTransit ReceiveEndPoint 无法侦听 .net 核心 Web API 中的队列
【发布时间】:2019-06-09 04:14:15
【问题描述】:

我在我的 .Net 核心解决方案中使用 RabbitMQ MassTransit 实现服务总线。我创建了一个名为 log.service 的队列。经过很多努力,我终于能够将消息推送到队列中,并且可以在管理工具中看到它们,但是当我在另一个微服务项目中收听同一个队列时,我无法这样做。我已将消息从身份验证服务推送到总线中,并希望将事件记录在日志服务中。请帮忙! 这是我的身份验证-StartUp.cs

var buildr = new ContainerBuilder();
        buildr.RegisterType<LoggingCommandConsumer>();
        buildr.Register(c =>
            {
                return Bus.Factory.CreateUsingRabbitMq(sbc =>
                 {
                     var host = sbc.Host(new Uri("rabbitmq://localhost/"), h =>
                      {
                          h.Username("guest");
                          h.Password("guest");
                      });

                     sbc.ExchangeType = ExchangeType.Direct;
                     sbc.ReceiveEndpoint(host, "log.service", e =>
                                   {

                                       e.Consumer<LoggingCommandConsumer>();

                                   });
                 });

            })
            .As<IBusControl>()
            .As<IBus>()
            .As<IPublishEndpoint>()
            .SingleInstance();

        buildr.Populate(services);
        ApplicationContainer = buildr.Build();

        return new AutofacServiceProvider(ApplicationContainer);

这是我的 logging-StartUp.cs:

 var buildr = new ContainerBuilder();
        buildr.RegisterType<LoggingCommandConsumer>();
        buildr.Register(context =>
            {
                var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
                 {
                     var host = cfg.Host(new Uri("rabbitmq://localhost/"), h =>
                       {
                           h.Username("guest");
                           h.Password("guest");
                       });

                     cfg.ReceiveEndpoint(host, "log.service", e =>
                                             {


                                                 e.Consumer<LoggingCommandConsumer>();

                                             });

                 });
                return busControl;
            })
           .SingleInstance()
            .As<IBusControl>()
            .As<IBus>();

        buildr.Populate(services);
        ApplicationContainer = buildr.Build();

        return new AutofacServiceProvider(ApplicationContainer);

这里我在 StartUp.CS 中启动 Bus

 var bus = ApplicationContainer.Resolve<IBusControl>();
        var busHandle = TaskUtil.Await(() => bus.StartAsync());
        lifetime.ApplicationStopping.Register(() => busHandle.Stop());

这里我将消息从身份验证控制器发送到端点:

    var sendToUri = new 
  Uri("rabbitmq://localhost/log.servicebind=true&queue=log.service");
        var endPoint = await _bus.GetSendEndpoint(sendToUri);

        await endPoint.Send<ILoggingCommand>(new
        {
            XCorrelationId = "asd",
            M4SId = "M4SId",
            Host = "asdasd",
            Level = "Level",
            Time = "2019-01-02T07:06:43.722Z",
            Message = "Message",
            Other = "Other"
        });

        return Ok();

当我尝试在 rabbitMQ 管理工具中的 log.service 总线中获取上述消息时,我可以这样做...但无法在 logging-startup.cs 中收听它

【问题讨论】:

    标签: c# rabbitmq masstransit


    【解决方案1】:

    您的端点有一个由"log.service" + Guid.NewGuid().ToString() 定义的队列,但您将消息发送到log.service 队列。

    我真的不明白将 guid 添加到端点地址的意义,你想达到什么目的?

    如果您将端点定义为cfg.ReceiveEndpoint(host, "log.service", ep =&gt; &lt;configuration&gt;,它应该可以工作。您需要取消注释您的消费者。

    【讨论】:

    • 我确实取消了我的消费者的注释,并且也没有 guid,但它仍然无法正常工作。由于消费者没有工作,我感到沮丧后评论了消费者。现在卡了一个星期。
    • 在没有 guid 的情况下使用...使用 guid 因为这个 stackoverflow.com/questions/39573721/… 正在尝试我在互联网上可以找到的所有东西,但没有运气
    • 嗯,我认为文档是更可靠的信息来源masstransit-project.com/MassTransit/usage/…
    • 我浏览过文档,浏览过互联网上所有可用的内容。我什至可以将消息推送到队列中,只是没有什么可以帮助我消费。我正在按照可用的文档和信息做所有事情。但它不起作用。 :(
    • 另一件事,所以今天我尝试在同一个项目中消费队列..它被消费了。但是,如果我尝试在不同项目的 StartUp.cs 文件中使用它,它就不起作用了……这是我的主要目标。
    猜你喜欢
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多