Комментарии 13
Сразу на начале завалился. Во-первых docker-compose. Через тире. ERROR: In file './docker-compose.yml', service 'ports' must be a mapping not an array.. Что может быть?
Раньше docker-compose (через тире) был отдельной утилитой, которую как бинарник отдельно качали и делали симлинк на каталог бинарников. Сейчас docker compose (без тире), начиная с версии 2.0, входит в стандартный пакет докера и ставить отдельно его не надо. По сути все тоже самое, поменяли просто API обращения к Docker Compose в CLI.
По поводу ошибки маппинга портов, уверен на 99%, что проблема в отступах в yaml файле, в статье все съехало. Должно быть так:
version: '3'
services:
localRabbitMQ:
image: rabbitmq:3-management-alpine
environment:
RABBITMQ_DEFAULT_USER: user
RABBITMQ_DEFAULT_PASS: password
ports:
- 5672:5672
- 15672:15672
Приложу свой пример 2х летней давности, если Автор не против. По сути ничего не изменилось. Оно и 5 лет назад делалось также :) https://github.com/binakot/Java-Spring-RabbitMQ-Example
Код в статье поправил. Действительно, просто поехал yml при переносе. Про docker compose up, @binakot верно подметил. В статье использовался Docker Desktop. Система Windows
Посмотрев на первые же листинги немного удивился.
разве автоконфигурация из
spring-boot-starter-amqp
не создаетConnectionFactory
/AmqpAdmin
/RabbitTemplate
?почему
@EnableRabbit
на компоненте (а не на конфигурации)?если хотите health endpoints -- используйте челевоческий
spring-boot-starter-actuator
Минутка занудства: если lombok нужен только для "@Data" не лучше уж использовать рекорды, раз проект на 17й версии?
Я бы сказал, если есть рекорды, то лучше вообще отказаться от ломбока.
Ну и с record'ами людям периодически нужны @With
/@Builder
. Плюс, иногда нужны полноценные древние java beans, там либо руками, либо @Data
Какой смысл в docker-compose, если нет воспроизводимого результата? Контейнер удален, конфигурация RabbitMQ вместе с ним, конфигурацию нужно либо через композ передавать, либо создавать свой образ с нужным конфигом, приложение с докер docker-compose должно стартовать в полностью работоспособном состоянии, без необходимости куда-то заходить и что-то создавать руками. Не указан volume для RabbitMQ, в результате, на сколько я помню, при каждом запуске будет создаваться новый, размером с гигабайт и если поднимать на виртуалке с ограниченным объемом памяти, то вы очень быстро заметите стремительное уменьшение дискового пространства. В Spring Boot конфигурационные параметры тоже должны задаваться через проперти, а не хардкодом. Где общий docker-compose файл, который поднимает все приложение вместе с инфраструктурой в работоспособном состоянии?
RabbitMQ + Spring boot + Docker. Отправляем и получаем сообщения через Producer и Consumer. Пошаговое руководство