#c# #.net-core #rabbitmq #masstransit
#c# #.net-ядро #rabbitmq #masstransit
Вопрос:
Я создаю receiveEndpoint с помощью masstransit и использую его следующим образом :
var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
cfg.ReceiveEndpoint("my-endpoint", x =>
{
x.Consumer<MyEndpointConsumer>();
});
}
Здесь мой класс MyEndpointConsumer :
class MyEndpointConsumer : IConsumer<IMyEndpoint>
{
public Task Consume(ConsumeContext<IMyEndpoint> context)
{
Console.WriteLine("MyEndpointConsumer");
}
}
MassTransit создает :
- очередь: «моя конечная точка»
- первый обмен: «моя конечная точка»
- второй обмен: «IMyEndpoint»
Я хочу отключить создание этого второго exchange. Документация MassTransit объясняет, что топология потребителя основана на «публикации топологии» (документация MassTransit) :
Топология потребления использует топологию публикации для обеспечения согласованного именования обменов / тем для типов сообщений.
Поэтому я пытаюсь изменить топологию публикации в моем интерфейсе «IMyEndpoint» :
cfg.Publish<IMyEndpoint>(x =>
{
x.Exclude = true;
});
но ничего не меняется, я пытаюсь :
[ExcludeFromTopology]
publiv interface IMyEndpoint
тоже ничего не изменилось.
Есть какие-либо идеи по созданию этого exchange?
Спасибо за вашу помощь.
Ответ №1:
Используемый тип сообщения не может быть исключен. Можно исключить унаследованные типы, но не фактический тип используемого сообщения, поскольку это предотвратит попадание опубликованных сообщений в очередь потребителя.
Если вы хотите отключить exchange и в то же время предотвратить попадание опубликованных сообщений в очередь, установите ConfigureConsumeTopology = false
в конфигураторе получения конечной точки.