Название темы: testTopic
Всего сообщений в теме: 1
Раздел: 8
Название группы потребителей: Consumer1
Язык потребителей: Java с включенным прослушивателем разделов
Инфраструктура: параллельная работа 4 jvms (это означает, что 4 потребителя работают с одинаковым именем группы)
проблема: когда я запускаю свой первый потребитель, вызываются методы обратного вызова Lister и делаются назначения разделов .. этот потребитель начал обрабатывать мои сообщения.
возьмем пример, этот потребитель держит сообщение MSG-1, и мой процессор обрабатывает сообщение (я намеренно поставил 20 тысяч секунд в качестве ожидания потока). Итак, не передали MSG-1 обратно в тему со смещением.
свойства потребителя
session.timeout.ms = 15 тысячных секунд.
В то же время, потребитель 2 начал,
этот потребитель запустил, назначил раздел (правильно вызванные методы обратного вызова) и не использовал сообщения, потому что эти 2 сообщения удерживаются потребителем 1.
теперь, из-за превышения интервала сердцебиения потребителя, брокер посчитал, что потребитель-1 мертв, и переназначил раздел на потребителе-2 (все)
Теперь вызовите метод, вызванный в потребителе-2 (назначенный и отозванный). В то же время время моего сеанса истекло, а сообщения msg-1 и msg-2 возвращаются к теме и выбираются для потребителя 2.
Теперь я обработал msg-1 && msg-2 два раза ... один раз от потребителя-1 и потребителя-2
Моя проблема здесь,
- Consumer-1 не вызывался с методом отмены вызова, вызванным разделом?
- после того, как мой спящий поток завершает (от потребителя -1), он пытается зафиксировать смещение с разделом ... мы получаем, что переопределение раздела выполнено ... вы не можете зафиксировать. это правильно, но как я могу получить метод обратного вызова в форме customer-1 ....
* +1025 * -Naresh.