MassTransit,在不同的虚拟主机上使用 UseMessageScheduler

MassTransit, using UseMessageScheduler on different virtual host

是否可以将 UseMessageScheduler 配置为使用与其总线不同的虚拟主机?

我在尝试实现此目标时遇到了 "The host was not found for the specified address"。

这是我的总线配置:

_myBus = Bus.Factory.CreateUsingRabbitMq(sbc =>
{
    var host = sbc.Host(new Uri("rabbitmq://localhost/MyVirtualHostName"), h =>
    {
        h.Username("guest");
        h.Password("guest");
    });

    sbc.ReceiveEndpoint(host, "MySaga", ep =>
    {
        var machine = new MyStateMachine();
        ep.StateMachineSaga(machine, _sagaRepository);

        sbc.UseMessageScheduler(new Uri("rabbitmq://localhost/Quartz"));
    });
});

我还检查了 MassTransit.QuartzService 是 运行 并消耗了 "rabbitmq://localhost/Quartz"。

当我在同一个虚拟主机上使用调度时,它工作正常。更清楚地说,我的目的是让不同的应用程序使用相同的 QuartzService 与不同的虚拟主机。

我使用:
MT 5.1.4
自动命名 5.1.3
MassTransit.Quartz5.1.4

非常感谢任何帮助:)

感谢@chris-patterson 的评论,我通过在总线中添加另一台主机解决了这个问题。这是我的配置:

_myBus = Bus.Factory.CreateUsingRabbitMq(sbc =>
 {
     var quartzHost = sbc.Host(new Uri("rabbitmq://localhost"), h =>
     {
        h.Username("guest");
        h.Password("guest");
     });

     var host = sbc.Host(new Uri("rabbitmq://localhost/MyVirtualHostName"), h =>
     {
        h.Username("guest");
        h.Password("guest");
     });

     sbc.ReceiveEndpoint(host, "MySaga", ep =>
     {
         var machine = new MyStateMachine();
         ep.StateMachineSaga(machine, _sagaRepository);

         sbc.UseMessageScheduler(new Uri("rabbitmq://localhost/Quartz"));
     });
});