内存中的 MassTransit 计划消息
In-memory MassTransit scheduled message
我使用 RabbitMQ 延迟消息插件来安排我的消息。没问题。
现在我想配置内存中的 MassTransit 以在开发环境中调度消息。
我的 asp.net 核心代码:
Uri schedulerEndpoint = new Uri("queue:scheduler");
services.AddMassTransit(x =>
{
x.AddMessageScheduler(schedulerEndpoint);
x.AddConsumer<ScheduleNotificationConsumer>();
x.UsingInMemory((context, cfg) =>
{
cfg.UseMessageScheduler(schedulerEndpoint);
cfg.ConfigureEndpoints(context);
});
});
好吧,这段代码不会在特定时间后调用我的消费者。
我读了 this link,我想我必须对内存中的计划消息使用 MassTransit.Quartz,因为,它说:UseInMemoryScheduler 方法初始化 Quartz.NET 用于独立的内存中操作。
是否正确?
如果是,但是这个 link 使用了以下代码,它依赖于 RabbitMq:
services.AddMassTransit(x =>
{
x.AddMessageScheduler(new Uri("queue:scheduler"));
x.UsingRabbitMq((context, cfg) =>
{
cfg.UseInMemoryScheduler("scheduler");
cfg.ConfigureEndpoints(context);
});
});
但我不想在开发环境中对 RabbitMq 有任何依赖。
如果您使用的是内存中传输,则可以使用 included in 7.1.8 的新延迟调度。这标准化了所有传输的配置,并首次提供了没有 Quartz.NET.
的内存调度
要配置新的延迟调度程序,请使用:
services.AddMassTransit(x =>
{
x.AddDelayedMessageScheduler();
x.UsingInMemory((context, cfg) =>
{
cfg.UseDelayedMessageScheduler();
cfg.ConfigureEndpoints(context);
});
});
我使用 RabbitMQ 延迟消息插件来安排我的消息。没问题。
现在我想配置内存中的 MassTransit 以在开发环境中调度消息。
我的 asp.net 核心代码:
Uri schedulerEndpoint = new Uri("queue:scheduler");
services.AddMassTransit(x =>
{
x.AddMessageScheduler(schedulerEndpoint);
x.AddConsumer<ScheduleNotificationConsumer>();
x.UsingInMemory((context, cfg) =>
{
cfg.UseMessageScheduler(schedulerEndpoint);
cfg.ConfigureEndpoints(context);
});
});
好吧,这段代码不会在特定时间后调用我的消费者。
我读了 this link,我想我必须对内存中的计划消息使用 MassTransit.Quartz,因为,它说:UseInMemoryScheduler 方法初始化 Quartz.NET 用于独立的内存中操作。
是否正确? 如果是,但是这个 link 使用了以下代码,它依赖于 RabbitMq:
services.AddMassTransit(x =>
{
x.AddMessageScheduler(new Uri("queue:scheduler"));
x.UsingRabbitMq((context, cfg) =>
{
cfg.UseInMemoryScheduler("scheduler");
cfg.ConfigureEndpoints(context);
});
});
但我不想在开发环境中对 RabbitMq 有任何依赖。
如果您使用的是内存中传输,则可以使用 included in 7.1.8 的新延迟调度。这标准化了所有传输的配置,并首次提供了没有 Quartz.NET.
的内存调度要配置新的延迟调度程序,请使用:
services.AddMassTransit(x =>
{
x.AddDelayedMessageScheduler();
x.UsingInMemory((context, cfg) =>
{
cfg.UseDelayedMessageScheduler();
cfg.ConfigureEndpoints(context);
});
});