0

我是 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 的多播位。安装了这些,它按预期工作。

4

1 回答 1

0

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

于 2013-02-22T16:17:52.047 回答