可能是一个非常愚蠢的MassTransit误解

时间:2013-02-20 03:53:49

标签: msmq 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 Google Groups获得了一些帮助,他们很快就让我理顺了...这没有按预期工作,因为我没有安装MSMQ的多播位。安装完毕并按预期工作。

1 个答案:

答案 0 :(得分:0)

请参阅原始帖子以获得答案,但它基本上归结为没有安装MSMQ的多播位。把它们放进去并按预期工作。