ActiveMQ — версия Docker — в соединении отказано: дополнительной информации нет

В приложении 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.

Понятно, что, вообще говоря, вы хотите решить проблему с подключением Docker/ActiveMQ, но у вас есть много взаимосвязанных вопросов и деталей, которые мешают сосредоточиться на основной проблеме и дать четкий ответ. Как говорится, «дьявол кроется в деталях», поэтому очень важно сосредотачиваться на одной вещи за раз и предоставлять только детали, абсолютно необходимые для понимания проблемы. Я рекомендую вам создать минимальный воспроизводимый пример, включающий объяснение того, что вы видите на каждом шаге.

Justin Bertram 12.04.2023 18:28

Вы пытались подключиться, используя имя хоста tcp://0dbd01e3b73c:61616? Кроме того, вы можете использовать некоторые стандартные сетевые инструменты для запроса порта независимо от клиентского кода ActiveMQ. проверьте "curl telnet://..hostname..:61616" .. и т. д.

Matt Pavlovich 12.04.2023 19:19

Подключиться к строке хоста из журнала образа Docker не работает. Ошибка: Причина: java.net.UnknownHostException: 017c2342d72e. [2] Telnet/tcp с curl: префикс URL-адреса неизвестен.

tm1701 12.04.2023 19:31

@Justin Bertram: Спасибо. Теперь все прояснилось, я удалил все, что не имело ничего общего с ошибкой.

tm1701 12.04.2023 20:57
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
118
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, что порт 61616 не рекомендуется IANA: Internet Assigned Numbers Authority.

Возможно, вам следует сопоставить порт activemq с другим диапазоном портов, например 9000:61616, используя сопоставление портов докеров, и не забудьте изменить конфигурацию spring на tcp://127.0.0.1:9000.

Пожалуйста, дайте мне знать, если это решит вашу проблему.

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