Отказоустойчивый транспортный протокол не может обрабатывать сообщения управления потребителем
Как часть AbortSlowConsumerStrategy, Active MQ отправляет команду на закрытие потребителя, если он обнаруживает, что потребитель работает медленно, но на стороне потребителя / клиента реализация протокола отработки отказа при сбое, по-видимому, не обрабатывает эту команду Consumercontrol, он не может сказать "ОШИБКА": Неизвестная команда - ConsumerControl.."; Есть ли лучший способ прервать потребителя вместо получения ошибок?
Обратите внимание, что потребитель находится в DotNet с использованием библиотеки Apache.NMS.
1 ответ
Похоже, вы используете старую клиентскую библиотеку, которая не поддерживала потребительский контроль, теперь новые версии должны поддерживать эту функцию. Это было исправлено в 5.12.0 в результате этой проблемы JIRA.
Используйте обновленную версию клиента (последняя версия 5.14.4), и у вас не должно возникнуть проблем.
Для некоторых других клиентских библиотек, в которых эти исправления не были внесены, ваша единственная альтернатива - настроить политику прерывания, чтобы просто разорвать соединение с клиентом, у которого медленный потребитель. Некоторая информация в этом посте и документации по API.