Макс. IEndpointInstances на процесс
Есть ли верхний предел количества уникальных IEndpointInstances
что будет размещено в одном процессе?
Я рассматриваю дизайн, который увидит до 100 уникальных IEndpointInstances
все слушают по отдельным очередям, будь активным одновременно.
Вызовет ли это проблему для NServiceBus? Может ли процесс завести в тупик или раскрутить так много потоков, чтобы быть безразличным и бесполезным?
Вопрос NServiceBus - Как получить отдельную очередь для каждого типа сообщений, на который подписчик получает подписку? Похоже, вы не можете иметь несколько конечных точек в процессе, но это более старая запись. Я построил небольшой образец против NServiceBus 6 - бета4, который работает.
Есть похожий вопрос NServiceBus Single Process, но рекомендованным подходом были множественные входные очереди, которые завершились на основе контекста OP с использованием функций Satellite. Однако в моем случае у меня есть 100 (функционально разных) саг (по 1 на очередь), где каждой саге может потребоваться получать похожие сообщения, но мне нужно убедиться, что только правильная сга получает сообщение. Поэтому я не думаю, что реализация пользовательской функции будет соответствовать моим требованиям. Или спутниковые функции будут поддерживать Sagas?
1 ответ
Одним из вариантов является использование самостоятельного мультихостинга. Используя этот подход, вы сами ставите конечные точки в одном процессе. Есть несколько вещей, которые следует принять во внимание, например:
- Сканирование сборки (может потребоваться настраиваемая логика сканирования для конечной точки).
- Пропускная способность (для конечных точек с высокой пропускной способностью я бы рекомендовал отдельный процесс хостинга).
- Чтобы обновить / повторно развернуть одну конечную точку, вы также удалите все остальные 99 конечных точек.
Несмотря на то, что нет никакого жесткого предела, сколько конечных точек может быть размещено совместно, 100 звучат немного. Сказав это, это также зависит от того, насколько велика нагрузка на эти конечные точки. Если вы обрабатываете 1 мсек / с или 1K мсг / с, определите, много ли это жизнеспособного варианта или нет.
Посмотрите на образец, который делает именно это.