Я пытаюсь закодировать систему, в которой у нас есть очередь для обработки сообщений. Проблема в том, что я хочу иметь две очереди: одну для среды разработки и другую для рабочей среды.
Программа.cs
builder.Services.AddMassTransit(c =>
{
c.UsingRabbitMq((context, configurator) =>
{
configurator.Host(builder.Configuration["EventBusSettings:HostAddress"]);
});
});
PublishController
PublishAssetRequest publishAssetRequest = new(){
AssetId = asset.Id,
ApplicationId = createAssetRequest.ApplicationId
};
await _publishEndpoint.Publish(publishAssetRequest);
Я знаю, что если я хочу указать, какую очередь я хочу использовать в потребителе, это так:
Потребитель
busFactoryConfigurator.ReceiveEndpoint(**configuration["EventBusSettings:Queue"]** ?? string.Empty, c =>
{
c.ConfigureConsumer<BlockchainConsumer<PublishAssetRequest>>(context);
c.ConfigureConsumer<BlockchainConsumer<PublishAssetMetadataRequest>(context);
});
Проблема в том, что я хочу сделать то же самое с издателем.
Я хотел бы иметь возможность указать, какую очередь я хочу использовать для публикации (отправить в очередь), но я не нашел способа сделать это.
Большое спасибо.
С RabbitMQ я бы предложил создавать отдельные виртуальные хосты для каждой среды (вместо совместного использования одного виртуального хоста несколькими средами). Это легко сделать с помощью CloudAMQP или даже просто запустив собственного брокера RabbitMQ.
Я создам еще один виртуальный хост для среды разработки. Спасибо, Крис.