MassTransit IBusControl.ScheduleRecurringSend 为相同类型的预定事件生成相同的 MessageId

MassTransit IBusControl.ScheduleRecurringSend generates the same MessageId for the same type of scheduled events

我有一个控制台应用程序,目的是将石英调度与公共交通结合使用。相关代码位于 Task StartAsync(CancellationToken cancellationToken) IHostedService 的实现中。

看起来像下面的代码

        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 可能有意义(因为它们不像定期消息那样是一次性消息)。

但是,截至目前,行为符合预期。