繁体   English   中英

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属性,但是只要它的调度应该触发,该消息就不会到达 state 机器。 好像我在配置中遗漏了一些东西,或者一些没有启动的 MassTransit 服务。

请协助。

如果您实际阅读文档,您会发现UseDelayedMessageScheduler是使用 RabbitMQ 进行调度的正确配置。 并且AddDelayedMessageScheduler用于基于容器的IMessageScheduler注册。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM