我是 MassTransit 的新手,我不明白的一件事是:
如何在多个 .net ServiceBuse 之间创建总线?
拿这个代码:
class Program
{
static void Main(string[] args)
{
var container = new WindsorContainer();
container.Register(AllTypes.FromThisAssembly().BasedOn<IConsumer>());
Console.WriteLine("Starting Buses!");
var bus1 = ServiceBusFactory.New(sbc =>
{
sbc.UseMsmq();
sbc.UseMulticastSubscriptionClient();
sbc.ReceiveFrom("msmq://localhost/bus1");
sbc.Subscribe(s => s.LoadFrom(container));
});
var bus2 = ServiceBusFactory.New(sbc =>
{
sbc.UseMsmq();
sbc.UseMulticastSubscriptionClient();
sbc.ReceiveFrom("msmq://localhost/bus2");
sbc.Subscribe(s => s.LoadFrom(container));
});
bus1.Publish(new TestMsg() { Name = "Hello Matt!" });
Console.WriteLine("Sent Message");
Console.ReadLine();
}
}
public class TestMsg
{
public string Name { get; set; }
}
public class TestMsgConsumer : Consumes<TestMsg>.All, IBusService
{
private IServiceBus bus;
public void Consume(TestMsg message)
{
Console.WriteLine("Got message on " + this.Context().Endpoint.Address);
}
public void Dispose()
{
if (bus != null)
bus.Dispose();
}
public void Start(IServiceBus bus)
{
this.bus = bus;
}
public void Stop()
{
}
}
我希望“收到消息...”会出现两次,因为我有两辆公共汽车。然而,我只得到一个。显然,有一些步骤将这两个 Bus 实例与同一个逻辑总线联系起来,我不明白那是什么。我不能将它们指向相同的队列名称,因为同样只有一个人会收到消息。
谢谢!
编辑/解决方案:
我从 MT Google Groups 获得了一些帮助,他们让我很快就理顺了……这没有按预期工作,因为我没有安装 MSMQ 的多播位。安装了这些,它按预期工作。