Как настроить обменники в MassTransit с использованием RabbitMQ?

Как настроить обменник таким образом, чтобы все сообщения, публикуемые в него, распределялись дальше в очереди по routing key, но при этом избежать создания обменника с названием очереди? В коде, который я использовал, обменники создаются с названием очереди.
  • 9 апреля 2024 г. 11:29
Ответы на вопрос 1
Для настройки обменников в MassTransit с использованием RabbitMQ, можно использовать конфигурацию в файле appsettings.json или напрямую в коде. 

Для того чтобы сообщения, публикуемые в обменник, распределялись дальше в очереди по routing key, можно указать exchange тип "topic". Вот пример конфигурации обменника в файле appsettings.json:

```json
"MassTransit": {
  "RabbitMq": {
    "Host": "localhost",
    "Username": "guest",
    "Password": "guest",
    "Exchange": {
      "Type": "topic",
      "ExchangeName": "my_exchange"
    }
  }
}
```

Для создания обменника с определенным именем и типом, можно указать его в настройках. В коде, при настройке шины сообщений MassTransit, можно указать имя обменника следующим образом:

```csharp
services.AddMassTransit(x =>
{
    x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg =>
    {
        cfg.Host("localhost", "/", h =>
        {
            h.Username("guest");
            h.Password("guest");
        });

        cfg.ExchangeType = ExchangeType.Topic;
        cfg.AutoDelete = false;

        cfg.Bind<MyMessage>(exchange =>
        {
            exchange.RoutingKey = "my_routing_key";
            exchange.ExchangeType = ExchangeType.Fanout;
            exchange.Durable = true;
        });
    }));
});
```

Таким образом, можно настроить обменники в MassTransit с помощью RabbitMQ не указывая название очереди в имени обменника, а также распределять сообщения по routing key.
Похожие вопросы