Давайте все по порядку :)
1 - Когда продюсер создает сообщение - он укажет тему, в которую он хочет отправить сообщение, верно? Это заботится о разделах?
По умолчанию производитель не заботится о разбиении. У вас есть возможность использовать настраиваемый разделитель для лучшего контроля, но это совершенно необязательно.
2 - Когда подписчик работает - Указывает ли он свой идентификатор группы, чтобы он мог быть частью группы потребителей той же темы или нескольких тем, которые интересуют эту группу потребителей?
Да, потребители присоединяются (или создают, если они одни) к группе потребителей, чтобы разделить нагрузку. Никакие два потребителя в одной группе никогда не получат одно и то же сообщение.
3 - У каждой группы потребителей есть соответствующий раздел на брокере, или у каждого потребителя есть один?
Ни. Всем потребителям в группе потребителей назначается набор разделов при двух условиях: ни один из двух потребителей в одной группе не имеет общего раздела, а группе потребителей в целом назначается каждый существующий раздел.
4 - Являются ли разделы, созданные брокером, следовательно, не заботой для потребителей?
Это не так, но вы можете видеть из 3, что абсолютно бесполезно иметь больше потребителей, чем существующих разделов, так что это ваш максимальный уровень параллелизма для потребления.
5 - Поскольку это очередь со смещением для каждого раздела, отвечает ли потребитель, какие сообщения он хочет прочитать? Нужно ли сохранять его состояние?
Да, потребители сохраняют смещение для каждой темы на раздел. Это полностью обработано Кафкой, не беспокойтесь об этом.
6 - Что происходит, когда сообщение удаляется из очереди? - Например: удержание было в течение 3 часов, затем проходит время, как обрабатывается смещение с обеих сторон?
Если потребитель когда-либо запрашивает смещение, недоступное для раздела на брокерах (например, из-за удаления), он переходит в режим ошибки и в конечном итоге сбрасывает себя для этого раздела либо в самое последнее, либо в самое старое доступное сообщение (в зависимости от значение конфигурации auto.offset.reset) и продолжить работу.