Can't reach consumer

早过忘川 提交于 2019-12-11 16:56:45

问题


I'm new to learn MassTransit and rabbitMQ.

I try to publish message and consume it in another dll. maybe something is wrong but i don't know where is my fault. I check it from

http://masstransit-project.com/MassTransit/usage/configuration.html#masstransit-and-aspnet-core

but still not working

This is my configuration

  public void ConfigureServices(IServiceCollection services)
        {
            services.AddHealthChecks();

            services.AddMvc();

            services.AddScoped<PersonConsumer>();


            services.AddMassTransit(x =>
            {
                x.AddConsumer<PersonConsumer>();

                x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg =>
                {
                    var host = cfg.Host(new Uri("rabbitmq://localhost"), hostConfigurator =>
                    {
                        hostConfigurator.Username("guest");
                        hostConfigurator.Password("guest");
                    });

                    cfg.ReceiveEndpoint(host, "submit-order", ep =>
                    {
                        ep.PrefetchCount = 16;
                        ep.UseMessageRetry(r => r.Interval(2, 100));

                        ep.ConfigureConsumer<PersonConsumer>(provider);
                    });
                }));
            });

            services.AddSingleton<IBus>(provider => provider.GetRequiredService<IBusControl>());
            services.AddSingleton<IHostedService, MassTransitConsoleHostedService>();


        }



  public class MassTransitConsoleHostedService : IHostedService
    {
        readonly IBusControl _bus;

        public MassTransitConsoleHostedService(IBusControl bus, ILoggerFactory loggerFactory)
        {
            _bus = bus;

            if (loggerFactory != null && MassTransit.Logging.Logger.Current.GetType() == typeof(TraceLogger))
                MassTransit.ExtensionsLoggingIntegration.ExtensionsLogger.Use(loggerFactory);
        }

        public async Task StartAsync(CancellationToken cancellationToken)
        {
            await _bus.StartAsync(cancellationToken).ConfigureAwait(false);
        }

        public Task StopAsync(CancellationToken cancellationToken)
        {
            return _bus.StopAsync(cancellationToken);
        }
    }


   public class PersonConsumer : IConsumer<Person>
    {
        public Task Consume(ConsumeContext<Person> context)
        {
            throw new NotImplementedException();
        }
    }



    [Route("api/[controller]")]
    [ApiController]
    public class PersonController : ControllerBase
    {
        private readonly IBus _bus;

        public PersonController(IBus bus)
        {
            _bus = bus;
        }

        public async Task<IActionResult> Post(Person person)
        {
            await _bus.Publish<Person>(person);
            return Ok();
        }
    }


never reach PersonConsumer. there is no error but still not working and i can't resolve it. it makes me confused.

来源:https://stackoverflow.com/questions/57706224/cant-reach-consumer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!