MassTransit Consumer 在进行依赖注入时不使用消息

MassTransit Consumer not consuming messages when doing Dependency Injection

我为依赖注入设置了我的消费者和端点,但我的消费者没有从消息队列中获取消息。

我在队列中只有 2 条要发送给消费者的消息,但公共交通系统没有接收到它们。

这是我设置所有内容的主程序。 appSettings 值正确。

public class Program {

        public static void Main(string[] args) {
            var executableLocation = Assembly.GetExecutingAssembly().Location;
            Directory.SetCurrentDirectory(Path.GetDirectoryName(executableLocation));

            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .UseWindowsService()
                .ConfigureServices((hostContext, services) => {
                    var appSettings = new Configuration().GetConfig();
                    var achievementFactory = new AchievementFactory();
                    var client = new MongoClient(appSettings.ConnectionString);
                    var db = client.GetDatabase(appSettings.Database);
                    var mongoRepository = new MongoDBRepository(db);

                    services.AddSingleton(appSettings);
                    services.AddSingleton<IRepository>(mongoRepository);
                    services.AddSingleton<IAchievementFactory>(achievementFactory);

                    services.AddMassTransit(x => {
                        x.AddConsumer<AddAchievementConsumer>();
                        
                        x.UsingRabbitMq((context, cfg) => {

                            cfg.Host(appSettings.QueueUrl, settings => {
                                settings.Username(appSettings.QueueUsername);
                                settings.Password(appSettings.QueuePassword);
                            });

                            cfg.ReceiveEndpoint(appSettings.AchievementQueue, ep =>
                                ep.ConfigureConsumers(context));
                            });
                    });
                });

    }

但我的消息只是坐在队列中,没有被使用。

查看代码,在我看来你没有启动公共汽车。

配置 MassTransit

后尝试使用 services.AddMassTransitHostedService();

来源:https://masstransit-project.com/usage/configuration.html#asp-net-core