Отказоустойчивый транспортный протокол не может обрабатывать сообщения управления потребителем

Как часть AbortSlowConsumerStrategy, Active MQ отправляет команду на закрытие потребителя, если он обнаруживает, что потребитель работает медленно, но на стороне потребителя / клиента реализация протокола отработки отказа при сбое, по-видимому, не обрабатывает эту команду Consumercontrol, он не может сказать "ОШИБКА": Неизвестная команда - ConsumerControl.."; Есть ли лучший способ прервать потребителя вместо получения ошибок?

Обратите внимание, что потребитель находится в DotNet с использованием библиотеки Apache.NMS.

1 ответ

Решение

Похоже, вы используете старую клиентскую библиотеку, которая не поддерживала потребительский контроль, теперь новые версии должны поддерживать эту функцию. Это было исправлено в 5.12.0 в результате этой проблемы JIRA.

Используйте обновленную версию клиента (последняя версия 5.14.4), и у вас не должно возникнуть проблем.

Для некоторых других клиентских библиотек, в которых эти исправления не были внесены, ваша единственная альтернатива - настроить политику прерывания, чтобы просто разорвать соединение с клиентом, у которого медленный потребитель. Некоторая информация в этом посте и документации по API.

Другие вопросы по тегам