[英]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
});
_MessageCheduler
是IMessageScheduler
實例。
我確實看到調度程序隊列收到了預定的消息,並且我在其中看到了正確的scheduledTime
屬性,但是只要它的調度應該觸發,該消息就不會到達 state 機器。 好像我在配置中遺漏了一些東西,或者一些沒有啟動的 MassTransit 服務。
請協助。
如果您實際閱讀文檔,您會發現UseDelayedMessageScheduler
是使用 RabbitMQ 進行調度的正確配置。 並且AddDelayedMessageScheduler
用於基於容器的IMessageScheduler
注冊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.