MassTransit RMQ 调度计划但未发送

MassTransit RMQ scheduling scheduled but not sent

我正在尝试通过 masstransit/rabbitmq 实现调度机制。

我已经添加了文档中所述的配置:

Uri schedulerEndpoint = new (Constants.MassTransit.SchedulerEndpoint);

services.AddMassTransit(mtConfiguration =>
{
    mtConfiguration.AddMessageScheduler(schedulerEndpoint);

    mtConfiguration.AddSagaStateMachine<ArcStateMachine, ArcProcess>(typeof(ArcSagaDefinition))
        .Endpoint(e => e.Name = massTransitConfiguration.SagaQueueName)
        .MongoDbRepository(mongoDbConfiguration.ConnectionString, r =>
        {
            r.DatabaseName = mongoDbConfiguration.DbName;
            r.CollectionName = mongoDbConfiguration.CollectionName;
        });

    mtConfiguration.UsingRabbitMq((context, cfg) =>
    {
        cfg.UseMessageScheduler(schedulerEndpoint);

        cfg.Host(new Uri(rabbitMqConfiguration.Host), hst =>
        {
            hst.Username(rabbitMqConfiguration.Username);
            hst.Password(rabbitMqConfiguration.Password);
        });

            cfg.ConfigureEndpoints(context);
    });
});

然后我将使用 Bus:

发送预定消息
DateTime messageScheduleTime = DateTime.UtcNow + TimeSpan.FromMinutes(1);
await _MessageScheduler.SchedulePublish<ScheduledMessage>(messageScheduleTime, new
{
    ActivationId = context.Data.ActivationId
});

_MessageChedulerIMessageScheduler 实例。

我确实看到调度程序队列接收到预定的消息,并且我在其中看到了正确的 scheduledTime 属性,但是只要它的计划应该触发,消息就不会到达状态机。好像我在配置中遗漏了一些东西或一些未启动的 MassTransit 服务。

请帮忙。

如果您实际阅读了 documentation,您会发现 UseDelayedMessageScheduler 是使用 RabbitMQ 进行调度的正确配置。并且 AddDelayedMessageScheduler 用于 container-based IMessageScheduler 注册。