masstrtransit IBusControl.ScheduleRecurringSend为相同类型的计划事件生成相



我有一个控制台应用程序,用于将石英调度与主传输相结合。相关代码在IHostedService的Task StartAsync(CancellationToken cancellationToken)实现中。

看起来像下面的代码

await _bus.ScheduleRecurringSend(new Uri($"queue_uri"),
new CustomMessageSchedule(),
new CustomMessage(),
cancellationToken: cancellationToken);
var scheduler = await _schedulerFactory.GetScheduler(cancellationToken);
scheduler.JobFactory = new MassTransitJobFactory(_bus, _jobFactory);
await scheduler.Start(cancellationToken);

已计划的消息已成功发布到队列,但它们获得相同的messageId。这在消费者方面造成了一些问题。

我不得不使用IFilter<SendContext<CustomMessage>>实现,但它没有成功。也许我没有正确地使用它,但我甚至不确定这是否是正确的方法。

对这件事有什么建议吗?

除了包含一些额外的消息头外,预定消息在发送之前不会被Quartz修改。为重复出现的消息生成一个新的MessageId可能是有意义的(因为它们不像定期安排的消息那样是一次性安排的消息)。

然而,目前的行为是预期的。

最新更新