是否可以将UseMessageScheduler配置为使用与其总线不同的虚拟主机?
在尝试实现此操作时,我遇到“找不到指定地址的主机”。
这是我的总线配置:
_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.Quartz 5.1.4
任何帮助都非常感激:)
答案 0 :(得分:0)
由于@ 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"));
});
});