Мы тестируем MassTransit, и нам было интересно, может ли один и тот же сервис иметь двух или более потребителей, каждый из которых публикует / использует сообщения между другими.
var bus = Bus.Factory.CreateUsingRabbitMq(x =>
{
var host = x.Host(new Uri("rabbitmq://localhost/"), h => { });
x.ReceiveEndpoint(host, "CropMetricsIngestExternal_RequestDevicesPerUser", e =>
e.Consumer<RequestDevicePerUserConsumer>());
x.ReceiveEndpoint(host, "CropMetricsIngestExternal_RequestDataPerDevice", e =>
e.Consumer<RequestDataPerDeviceConsumer>());
});
В этом случае у этого потребителя у нас есть RequestDevicePerUserConsumer, который получает все устройства и затем публикует сообщение для CropMetricsIngestExternal_RequestDataPerDevice, которое обрабатывает потребитель RequestDataPerDeviceConsumer.
Нам интересно, подходит ли это для сценария производства. Поскольку MassTransit создает экземпляр для каждого полученного сообщения, похоже, было бы то же самое, если бы он был в отдельных проектах или просто в отдельных классах.