Мы используем автономный ActiveMQ 5.13.2, php и stomp. Stomp работает с ActiveMQ в синхронном режиме (с проверкой квитанции).
Иногда я вижу поведение, которое выглядит как потерянные сообщения.
Мы используем собственную систему управления задачами, которая обеспечивает работу с различными типами задач.
Что просходит:
1) Задача создана, сообщение отправлено в очередь.
2) Сообщение отправляется из очереди, задача выполняет вызовы API и т. Д., Затем новое сообщение отправляется в очередь с задержкой по времени (нужно подождать некоторое время для удаленного обслуживания, а затем продолжить работу).
И это все, у нас есть проблемы.
Я ожидаю, что сообщение, отправленное на шаге 2, будет использовано из очереди, но проблемная задача все еще находится в состоянии «ожидание потребления сообщения», которое выглядит как сообщение в очереди, ожидание свободного потребителя или как задержка по-прежнему не истек (но у нас есть много свободных потребителей, очередь пуста и время задержки истекло).
Например, сегодня это происходит для ~ 50 задач. Еще десятки тысяч заданий были выполнены правильно.
Я уверен, что на шаге 2 сообщение было отправлено правильно, потому что библиотека php-stomp настроена для подтверждения отправки сообщений при получении (мы используем эту библиотеку: https://github.com/centraldesktop/php-stomp )
Итак, мой вопрос: какой способ лучше всего для устранения этой проблемы? Например, могу ли я войти в ActiveMQ на пару дней, чтобы получить всю информацию о сообщениях, отправленных в очередь, отправленных в sheduler, перенесенных в очередь из sheduler и о использованных сообщениях?
Или какой-то другой способ существует?
Задача ещё не решена.
Других решений пока нет …