C# 公共交通和广播

C# 公共交通和广播,c#,rabbitmq,masstransit,C#,Rabbitmq,Masstransit,我正在尝试建立一个消息传递系统,并在多个应用程序之间运行。我有一个正在运行的RabbitMQ实例,看起来不错。我可以将多个订阅者/发布者连接到RabbitMQ实例,它们看起来很好。然后,我可以从一个发布者发布消息,但只有一个订阅者收到消息 我相信这和我排队的方式有关。我已经看过兔子的教程,但我不知道该如何翻译成Masstransit库 就我的一生而言,我很难找出我做错了什么 Nuget: MassTransit.Extensions.DependencyInjection 5.3.2 MassT

我正在尝试建立一个消息传递系统,并在多个应用程序之间运行。我有一个正在运行的RabbitMQ实例,看起来不错。我可以将多个订阅者/发布者连接到RabbitMQ实例,它们看起来很好。然后,我可以从一个发布者发布消息,但只有一个订阅者收到消息

我相信这和我排队的方式有关。我已经看过兔子的教程,但我不知道该如何翻译成Masstransit库

就我的一生而言,我很难找出我做错了什么

Nuget:

MassTransit.Extensions.DependencyInjection 5.3.2 MassTransit.RabbitMQ 5.3.2 有人能帮忙吗

        // Register MassTransit
        services.AddMassTransit(mtCfg =>
        {
            mtCfg.AddConsumer<DomainMessageConsumer>();

            mtCfg.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(rbCfg =>
            {
                var host = rbCfg.Host(settings.RabbitMq.Host, settings.RabbitMq.VirtualHost, h =>
                {
                    h.Username(settings.RabbitMq.Username);
                    h.Password(settings.RabbitMq.Password);
                });

                rbCfg.ReceiveEndpoint(host, settings.RabbitMq.ConnectionName, ep =>
                {
                    ep.PrefetchCount = 16;
                    ep.UseMessageRetry(x => x.Interval(2, 100));

                    ep.ConfigureConsumer<DomainMessageConsumer>(provider);
                });
            }));
        });

您遇到的问题是,您在所有使用者上使用相同的queuename。如果要向所有使用者广播,则应使所有队列名称唯一。在您的代码示例中,应该使settings.RabbitMq.ConnectionName变量对每个使用者都是唯一的

检查下图,想象订阅B是您设置的queue settings.RabbitMq.ConnectionName。您将看到图片的左侧部分,实际上只有订阅服务器B1接收到循环平衡,但这偏离了主题。如果需要广播,可以在示例中创建单独的订阅或设置.RabbitMq.ConnectionName


我建议您先阅读有关MassTransit的文档,而不是RMQ:和