如果 Masstransit 使用 Quartz 和 Rabbitmq 安排了一个活动,我有办法看到它吗?

If Masstransit schedules an event with Quartz and Rabbitmq, it there a way I can see it?

我正在尝试解决生产问题。我正在调试一个使用 MassTransit 的程序,然后使用 RabbitMq 和 Quartz。似乎代码使用 'eventScheduler.SchedulePublish' 来正确安排事件,但是在生产中,相关的消费者没有在预定的时刻被调用。

有没有办法查看事件是否到达其预定容器中。有没有办法查看为未来时刻安排的事件列表?我试图查看 RabbitMq Management,但我不确定在哪里检查什么。

调度程序启动于:

services.AddMassTransit(opt => { opt.AddMessageScheduler(schedulerEndpoint); .... })

然后事件最终被推送到:

await eventScheduler.SchedulePublish<T>(this.DeliveryTime.Value, Event, cancellationToken);

您需要找到哪个服务是 运行 实际的 Quartz 服务,并确定它使用的数据库。然后您应该能够深入了解 Quartz 数据库模式以识别任何计划的消息。

schedulerEndpoint 指定的任何调度程序地址的队列中都应该有一个消费者。您应该在 RabbitMQ 管理控制台中看到该连接,这可能会让您了解哪个 host/process 是 运行 Quartz 服务。

除此之外,您可能 Google 了解 Quartz 的数据库模式,但 schema 在 GitHub.