Установите RocketMQ с помощью Docker Установите RocketMQ с помощью Docker
Использование Docker для установки RocketMQ может быть более удобным для развертывания и управления.Следующие основные шаги:
RocketMQ
Это промежуточное программное обеспечение распределенных сообщений, NameServer
состоящее из двух ролей и брокера, и представляет собой типичное решение для обмена сообщениями, основанное на режиме публикации/подписки.
NameServer
Это служба именования RocketMQ, которую можно понимать как службу, аналогичную DNS, которая в основном отвечает за запись информации о маршрутизации Topic и адресной информации Broker. В каждом кластере RocketMQ должен быть как минимум один сервер имен, а несколько серверов имен не имеют состояния и равны, поэтому высокая доступность может быть достигнута за счет расширения емкости. Когда клиенту-производителю или потребителю необходимо отправить или получить сообщения, ему необходимо сначала запросить у сервера имен информацию о брокере соответствующей темы, а затем установить соединение с брокером.Broker
Это агент хранения и передачи сообщений RocketMQ, который отвечает за хранение и пересылку сообщений. Каждый брокер отвечает за управление несколькими очередями сообщений темы, поддерживает репликацию ведущий-ведомый и архитектуру с несколькими ведущими, а также контролирует время хранения и метод хранения сообщений на брокере через уровень хранилища. Брокеры также могут сотрудничать для повышения эффективности обработки сообщений и отказоустойчивости кластера.
NameServer
Broker
Общайтесь с через механизм обнаружения пульса, чтобы убедиться, что NameServer может своевременно обновлять информацию о состоянии брокера, а брокер также может получать последнюю информацию о маршрутизации темы. В RocketMQ укажите адрес NameServer, настроив параметрnamesrvAddr брокера.
Таким образом, NameServer и Broker неотделимы друг от друга и взаимодействуют друг с другом, благодаря их сотрудничеству для реализации передачи и обработки сообщений RocketMQ.
1. Извлеките образ RocketMQ:
docker pull rocketmqinc/rocketmq
2. Запустите экземпляр RocketMQ:
在运行实例之前,需要创建一个存储目录,用于保存RocketMQ 的数据和日志。例如:
mkdir /opt/rocketmq/data
mkdir /opt/rocketmq/logs
然后,使用以下命令来启动RocketMQ 实例:
docker run -d --name rmqnamesrv -p 9876:9876 -v /opt/rocketmq/data:/root/rocketmq/data -v /opt/rocketmq/logs:/root/rocketmq/logs rocketmqinc/rocketmq sh mqnamesrv
Это запустит сервер имен в фоновом режиме и сопоставит его с портом хоста 9876
. Смонтируйте каталоги /opt/rocketmq/data
and в каталоги and /opt/rocketmq/logs
в контейнере , чтобы хост мог получить доступ к данным и журналам RocketMQ./root/rocketmq/data
/root/rocketmq/logs
Затем запустите экземпляр Broker с помощью следующей команды:
docker run -d --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=127.0.0.1:9876" -p 10911:10911 -p 10909:10909 -v /opt/rocketmq/data:/root/rocketmq/data -v /opt/rocketmq/logs:/root/rocketmq/logs rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq/conf/broker.conf
10911
Это запустит экземпляр брокера в фоновом режиме и сопоставит его с портом хоста 10909
. Смонтируйте каталог /opt/rocketmq/data
and в каталог and /opt/rocketmq/logs
в контейнере , чтобы контейнер мог получить доступ к данным и журналам RocketMQ, и настройте параметр, чтобы указать адрес ./root/rocketmq/data
/root/rocketmq/logs
Broker
NAMESRV_ADDR
NameServer
Примечание. В приведенной выше команде мы использовали параметр –link, чтобы связать контейнер сервера имен с контейнером Broker. Также задайте адрес сервера имен в качестве NAMESRV_ADD
переменной среды R и задайте для нее значение namesrv:9876
, чтобы контейнер Broker мог правильно получить доступ к серверу имен.
3. Протестируйте RocketMQ:
Протестируйте через консоль RocketMQ или командную строку, чтобы убедиться, что RocketMQ работает нормально. Например, вы можете использовать инструмент mqadmin для простого теста следующим образом:
docker run --rm rocketmqinc/rocketmq:4.9.1 sh mqadmin clusterList -n 127.0.0.1:9876
Выше приведены основные шаги для Docker по установке RocketMQ, и вам нужно обратиться к официальной документации за конкретными подробностями .