Устранение проблемы, связанной с невозможностью использования некоторых данных в RocketMQ

задняя часть исходный код Командная строка балансировки нагрузки

проблемное явление

Сегодня я внезапно получил предупреждающее сообщение RocketMQ следующего содержания:

Напомните некоторые данные без потребления и генерации стека.

ОткрытымRocketMq-Console-NgПросмотрите форму ниже:

Примечание:Первая реакцияПодписаться на несколько тем в группе потребителей?(Почему так скептически, следующий анализ).

по командеstatsAll используется для запроса статистики Topic и Consumer tps.:

sh mqadmin statsAll -n namesrv

Не нашли проблем, очень странно? К счастью, я уже видел исходный код и могу только отлаживать исходный код.

Отладка исходного кода

Эта статья не посвящена объяснению процесса исходного кода, а затем я буду медленно анализировать часть исходного кода, когда у меня будет время.Чтобы реализовать балансировщик нагрузки, потребитель будет повторно выполнять Rebalance каждый раз, когда узел добавляется или уменьшается. Выбор по умолчанию — получить все очереди и получить соответствующую группу.Все последующие cidAll (все потребители), а затем аналогично операциям пейджинга...

Сделайте точку останова на эту позицию и обнаружите странные явления:

Я понимаю, почему я вижу это здесь.RocketMq-Console-NgУбедитесь, что многие из следующих пустых и нет потребителей.Так как cidAll имеет 0, 2 и 3, всего очередей 16. Если cidAll показывает 4, то каждому клиенту должно быть выделено 4, но поскольку 0, 2 , и 3 все распределяются один раз.

Часть исходного кода:

Примечание:Что это за явление, наверное, ясно, следующий акцент, почему это происходит?

Устранение неполадок

Результат запроса через команду RocketMQ все тот же:

Увидев это, я задаюсь вопросом, запускался ли экземпляр потребления много раз, а код все еще отсутствует Я действительно не могу случайно проверить конфигурацию tomcat, и я приятно удивлен, обнаружив:
После общения с пользователем было обнаружено, что развертывание не было перезапущено, и проблема с перезапуском была решена.

быть решенным

Оглядываясь назад на то, почему это произошло, RocketMQ забыл множество процессов, поэтому я нашел время, чтобы пройтись по нему еще раз, чтобы разобраться с этой проблемой.

День только начинается, с нетерпением жду вашего дальнейшего внимания, давайте вместе отправимся в мир RocketMQ! ! !

Предыдущие статьи серии RocketMQ


Если вы чувствуете себя вознагражденным после прочтения, пожалуйста, поставьте лайк, подпишитесь и добавьте официальную учетную запись [Ingenuity Zero], чтобы узнать больше захватывающей истории! ! !

Присоединяйтесь к Планете Знаний и обсуждайте вместе!