2016-08-03 3 views
2

У меня есть среда, где у меня есть только один сервер приложений. У меня есть некоторые сообщения, которые требуют некоторое время для обслуживания (например, 10 секунд или около того), и я хотел бы увеличить пропускную способность, настроив несколько экземпляров моего приложения, использующего потребительское приложение, для обработки этих сообщений. Я читал о шаблоне «конкурирующий потребитель» и собираю, что этого следует избегать при использовании MassTransit. Согласно документам MassTransit here, каждая конечная точка приема должна иметь уникальное имя очереди. Я изо всех сил пытаюсь понять, как сопоставить эту рекомендацию с моей средой. Возможно ли иметь N экземпляров пользователей, которые получают одно и то же сообщение, но только один из экземпляров фактически действует на него? Другими словами, можем ли мы реализовать шаблон «конкурирующий потребитель», но в нескольких очередях вместо одного?MassTransit Несколько потребителей

Или я смотрю на это неправильно? Мне действительно нужно заглянуть в метод «Отправить», а не «Опубликовать»? Недостатком «Отправить» является то, что он требует, чтобы отправитель имел прямые знания о существовании конечной точки, и я хочу быть динамичным с количеством пользователей/конечных точек, которые у меня есть. Есть ли что-то в MassTransit, которое могло бы помочь отслеживать количество экземпляров/очередей/конечных точек клиентов, которые могут обслуживать определенный тип сообщения?

Спасибо, Энди

ответ

4

так «избежать конкуренции потребителей» руководство было от того, когда MSMQ был основным транспортом. MSMQ упадет, если несколько потоков, которые читают из очереди.

Если вы используете RabbitMQ, то конкурирующие потребители работают блестяще. Конкурирующие потребители - правильный ответ. Каждое конкурирующее потребление будет использовать один и тот же прием от конечной точки.

Смежные вопросы