В приложении Spring Boot 2.7 при запуске я подключаюсь к порту 61616 образа ActiveMQ Docker. Часто я получаю ошибки, что приложение не может подключиться к ActiveMQ. Иногда мне приходится удалять образ Docker и/или папку Window 10, прежде чем все снова заработает. В других случаях достаточно просто перезапустить рабочий стол Windows.
Вопрос: Как я могу предотвратить эти проблемы с подключением?
o.s.j.l.DefaultMessageListenerContainer: не удалось обновить JMS Соединение для пункта назначения «inmemory.queue.mutatieverslag» — повторная попытка используя FixedBackOff{интервал=5000, currentAttempts=12, maxAttempts=неограниченно}. Причина. Не удалось подключиться к URL-адресу брокера: TCP://127.0.0.1:61616. Причина: java.net.ConnectException: соединение отказано: нет дополнительной информации
Конфигурация ПО:
ActiveMQ работает в среде Docker Desktop с файлом docker-compose. Приложение Java запускается отдельно. Поскольку я экспортирую порт, порт должен быть доступен для локального хоста.
Образ Докера:
version: '3'
services:
activemq:
image: symptoma/activemq:latest
ports:
- "61616:61616"
- "8161:8161"
volumes:
- /k/data/var/activemq/data:/data/activemq
- /k/data/var/activemq/log:/var/log/activemqnetworks
networks:
backend:
Диагноз:
При запуске образа ActiveMQ Docker я вижу в журнале:
2023-04-12 16:18:32 ИНФОРМАЦИЯ | Прослушивание соединений по адресу: TCP://0dbd01e3b73c:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600
Выполнение «netstat -nao» дает список без порта 61616. Это верно?
Оболочка Bash (Windows) с curl telnet:
При выполнении эхо-запроса на этот порт ничего не отображается. Некоторые предположили, что это указывает на то, что сервер не прослушивается. Через порт управления 8161 я могу подключиться/просматривать консоль ActiveMQ.
Вы пытались подключиться, используя имя хоста tcp://0dbd01e3b73c:61616? Кроме того, вы можете использовать некоторые стандартные сетевые инструменты для запроса порта независимо от клиентского кода ActiveMQ. проверьте "curl telnet://..hostname..:61616" .. и т. д.
Подключиться к строке хоста из журнала образа Docker не работает. Ошибка: Причина: java.net.UnknownHostException: 017c2342d72e. [2] Telnet/tcp с curl: префикс URL-адреса неизвестен.
@Justin Bertram: Спасибо. Теперь все прояснилось, я удалил все, что не имело ничего общего с ошибкой.
Я думаю, что порт 61616 не рекомендуется IANA: Internet Assigned Numbers Authority.
Возможно, вам следует сопоставить порт activemq с другим диапазоном портов, например 9000:61616, используя сопоставление портов докеров, и не забудьте изменить конфигурацию spring на tcp://127.0.0.1:9000.
Пожалуйста, дайте мне знать, если это решит вашу проблему.
Понятно, что, вообще говоря, вы хотите решить проблему с подключением Docker/ActiveMQ, но у вас есть много взаимосвязанных вопросов и деталей, которые мешают сосредоточиться на основной проблеме и дать четкий ответ. Как говорится, «дьявол кроется в деталях», поэтому очень важно сосредотачиваться на одной вещи за раз и предоставлять только детали, абсолютно необходимые для понимания проблемы. Я рекомендую вам создать минимальный воспроизводимый пример, включающий объяснение того, что вы видите на каждом шаге.