大众运输在轻载下跳过命令

时间:2019-03-16 21:08:12

标签: rabbitmq masstransit

我最近建立了一个简单的公交服务来处理命令。如果我一次发送3条命令,则它会正确消耗前2条命令,然后将第3条放在*_skipped队列中。我的理解是,仅当端点没有可使用它的使用者时,才应将命令放在跳过的队列中,因此我很困惑为什么应该跳过第三个命令。我该怎么做才能进一步调查并解决问题?

这是消费者的配置

    services.AddMassTransit(x =>
        {
            x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg =>
            {
                var host = cfg.Host(_settings.RabbitMqConnectionString, "/", h => { });

                cfg.UseInMemoryScheduler();
                //cfg.UseMessageScheduler(new Uri("rabbitmq://localhost/quartz"));
                cfg.UseExtensionsLogging(provider.GetRequiredService<ILoggerFactory>());

                cfg.ReceiveEndpoint(host, CurriculumQueryHelper.EndpointName, e =>
                {
                    e.Consumer<CurriculumQueryHelper>(provider);
                });

                cfg.ReceiveEndpoint(host, CurriculumCommandHelper.EndpointName, e =>
                {
                    e.Consumer<CurriculumCommandHelper>(provider, config =>
                    {
                        //config.UseConcurrencyLimit(1);
                    });
                });
            }));
        });

1 个答案:

答案 0 :(得分:1)

事实证明,另一个服务已使用我向其发送命令的地址注册了一个终结点,这导致命令被跳过。