私はMassTransitを初めて使用しますが、理解できないことの1つは次のとおりです。
複数の.netServiceBuses間にバスを作成するにはどうすればよいですか?
このコードを取る:
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()
{
}
}
バスが2つあるので、「Gotmessageon...」が2回表示されると思います。しかし、私は1つしか取得しません。明らかに、これら2つのバスインスタンスを同じ論理バスに結び付けるいくつかのステップがあります。それが何であるかはわかりません。繰り返しになりますが、メッセージを受け取るのは1つだけなので、同じキュー名を指すことはできません。
ありがとう!
編集/解決策:
MT Googleグループの助けを借りて、すぐにすぐに解決してくれました... MSMQのマルチキャストビットがインストールされていなかったため、これは期待どおりに機能しませんでした。それらをインストールして、期待どおりに機能しました。