首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Masstransit信道

Masstransit信道
EN

Stack Overflow用户
提问于 2022-08-18 06:48:26
回答 1查看 28关注 0票数 0

我在我的MassTransit核心应用程序上配置了以下.NET:

代码语言:javascript
复制
public void ConfigureServices(IServiceCollection services)
{
    [...]

    // producer
    services.AddMassTransit(x =>
    {
        x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg =>
        {    
            cfg.Host(new Uri(_configuration["RabbitMQ:URI"] + _configuration["RabbitMQ:VirtualHost"]), $"ENG {_configuration["SiteID"]} Producer", h =>
            {
                h.Username(_configuration["RabbitMQ:UserName"]);
                h.Password(_configuration["RabbitMQ:Password"]);
            });

            cfg.Publish<NormUpdate>(x =>
            {
                x.Durable = true;
                x.AutoDelete = false;
                x.ExchangeType = "fanout"; // default, allows any valid exchange type
            });
            cfg.ConfigurePublish(x => x.UseExecute(x => 
            { 
                x.Headers.Set("SiteID", _configuration["SiteID"]); 
            }));
        }));
    });

    services.AddMassTransit<ISecondBus>(x =>
    {
        x.AddConsumer<NormConsumer>();
        x.AddBus(context => Bus.Factory.CreateUsingRabbitMq(cfg =>
        {
            cfg.UseMessageRetry(r => r.Intervals(100, 200, 500, 800, 1000));
            cfg.Host(new Uri(_configuration["RabbitMQ:URI"] + _configuration["RabbitMQ:VirtualHost"]), $"ENG {_configuration["SiteID"]} Consumer", h =>
            {
                h.Username(_configuration["RabbitMQ:UserName"]);
                h.Password(_configuration["RabbitMQ:Password"]);
            });

            cfg.ReceiveEndpoint($"norm-queue-{_configuration["SiteID"]}", e =>
            {
                e.Durable = true;
                e.AutoDelete = false;
                e.Consumer<NormConsumer>(context);
                e.UseConcurrencyLimit(1);
                e.ExchangeType = "fanout";
                e.PrefetchCount = 1;
            });
        }));
    });

    services.AddOptions<MassTransitHostOptions>().Configure(options =>
    {
        options.WaitUntilStarted = false;
        options.StopTimeout = TimeSpan.FromSeconds(30);
    });

[...]
}

public interface ISecondBus : IBus
{
}

我注意到当创建连接时,使用者连接有两个通道。频道(1)没有附加消费者,频道(2)有一个消费者。

我以为接收器上只有一个频道。这是正常的行为还是我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-18 12:12:16

你应该有三个频道:

  1. One用于您配置的第一总线
  2. One用于您配置的第二总线(MultiBus配置完全独立的总线实例,没有任何共享)用于您配置的第二总线上的接收端点的
  3. 1。

1 + 1 + 1 = 3

Q.E.D.

是的,我在小学时在数学俱乐部。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73398551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档