Я новичок в Java и работаю над проектом, который использует несколько (разных) тем и отправляет их на другой сервер. Мне было интересно, как лучше всего работать с несколькими темами.
Насколько я понимаю, каждый потребитель привязан к одной теме, поэтому, если бы мне пришлось использовать несколько тем, мне понадобился бы один потребитель для каждой отдельной темы. Поскольку потребитель делает блокирующий вызов, мне нужно будет вызвать поток для каждого потребителя, чтобы параллельно использовать эти темы.
И если я хочу еще больше повысить пропускную способность, будет ли хорошей практикой иметь один поток-босс для каждого потребителя (прикрепленный к теме) и разрешить каждому потоку-боссу настраивать рабочие потоки для соответствующего повышения производительности?
Пожалуйста, посоветуйте, является ли это хорошей практикой, а если нет, то каковы другие альтернативные варианты? И есть ли какие-либо известные шаблоны проектирования для решения этой проблемы?
Почему я выбрал модель потребителя вместо модели слушателя?
У меня есть еще одно ограничение: после того, как потребитель получит сообщение, ему необходимо отправить сообщение на другой принимающий сервер. Если принимающий сервер не работает (во время отправки новой версии), я должен приостановить прием сообщений до тех пор, пока принимающий сервер не включится. В этом случае наличие прослушивателя сообщений не поможет, потому что я не смогу приостановить прослушиватель, когда принимающий сервер не работает. Я прав, когда говорю это, или есть способ приостановить слушателя и прекратить потребление сообщений, пока принимающий сервер не включится?