0
我是新來MassTransit一件事我不明白的是:可能是一個非常愚蠢的MassTransit誤解
如何創建多個.NET ServiceBuses之間的公交車?
把這個代碼:
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()
{
}
}
我預計「上...得了消息」露面兩次,因爲我有兩個總線。但是,我只有一個。顯然有一些步驟將這兩個總線實例連接到相同的邏輯總線,我不明白這是什麼。我不能將它們指向相同的隊列名稱,因爲再一次,只有一個人會得到該消息。
謝謝!
編輯/解決方案:
我從谷歌MT組一些幫助,他們讓我趕緊挺直了......如預期這不是工作,因爲我沒有組播位安裝MSMQ。得到了這些安裝,並按預期工作。
我相信這可能是一個計時問題。你是否嘗試在'ServiceBusFactory.New'和'bus1.Publish'之間進行睡眠。 – Clay 2013-02-20 22:57:13
不,如果我把Thread.Sleep放在那裏,以確保總線啓動並運行,它仍然不會收到消息。 – 2013-02-22 03:55:09