簡體   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