Когда закрыть производителя или потребителя - PullRequest
0 голосов
/ 16 ноября 2018

В последнее время у нас возникают проблемы с производительностью наших потребителей и производителей Kafka. Мы используем Kafka Java API в Scala. Что считается хорошей практикой при открытии и закрытии объектов потребителей и производителей? Я считаю, что это довольно открытый вопрос, и правильный ответ всегда depends, но я пытаюсь рассуждать об этом.

Могут ли потребители иметь длительные соединения и оставаться открытыми?

Должны ли производители закрываться всякий раз, когда мы заканчиваем производство сообщений?

1 Ответ

0 голосов
/ 16 ноября 2018

Могут ли потребители иметь длительные соединения и оставаться открытыми?

В общем, да.

Подробно: в зависимости от конфигурации потребителя.

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

Если ваши потребители используют автоматическую фиксацию смещений, они по-прежнему будут фиксировать каждую Nмс (AFAIK 60k), возможно, тратя ресурсы.

В противном случае они могут остаться - но зачем тратить ресурсы?

Должны ли производители закрываться всякий раз, когда мы заканчиваем выдавать сообщения?

В общем, да.

Зависит от вашего дизайна, но если вы можете сказать в определенное время, что больше не будете отправлять сообщения, тогда вы можете закрыть.То, что не означает , означает, что вы должны закрывать и заново создавать продюсера после каждого отправленного сообщения.

...