Быстрый запуск очереди сообщений
Данный раздел предназначен для ознакомления с продуктом TQE(MQ).
В разделе приведены варианты быстрой установки и запуска приложения – локально и c помощью Docker. Информация об установке TQE(MQ) для промышленного использования приведена в Руководстве по установке.
Далее описываются шаги по настройке модуля API (gRPC-сервера) и параметров подключения к очереди. После этого проверяется корректность установки и работоспособность приложения.
- Системные требования.
- Установка экземпляра.
- Запуск приложения.
- Настройка приложения после установки.
- Проверка установки приложения.
TQE(MQ) поддерживает установку на следующие операционные системы (ОС):
- RED OS 7.3.
- Astra Linux.
Также возможна установка на другие ОС – ALT Linux, AlmaLinux, Ubuntu, CentOS – но полноценная работоспособность не гарантируется.
Для работы приложения необходима библиотека glibc версии 2.17-260.el7_6.6 и выше. Для проверки текущей установленной
версии glibc и её обновления выполните:
$ rpm -q glibc
$ yum update glibc
- Распакуйте архив с дистрибутивом TQE(MQ):
$ tar -xzf <имя_архива>.tar.gz
- Перейдите в каталог с распакованным дистрибутивом:
$ cd message-queue-ee
- Для запуска ядра TQE(MQ) выполните команду:
$ tt start
Ответ должен иметь вид:
• Starting an instance [message-queue-ee:app]...
Выполните проверку успешности запуска приложения:
$ tt statusINSTANCE STATUS PID MODEmessage-queue-ee:app RUNNING 10841 RO
-
Далее необходимо настроить конфигурацию хранилища данных для очереди сообщений.
В данном случае используются преднастроенные файлы конфигурации
instances.ymlиconfig.yml. Они поставляются в дистрибутиве и после распаковки находятся в каталоге верхнего уровняmessage-queue-ee/. В них определяется топология кластера – какие узлы какую роль выполняют, а также задается группировка узлов по наборам реплик для резервирования данных. Также на этом шаге выполняется запуск базы данных в кластере.
$ tt replicaset vshard bootstrap .
Ответ должен иметь вид:
• Discovery application...Orchestrator: centralized configReplicasets state: bootstrapped• appFailover: offMaster: single• app 127.0.0.1:3301 rw• Bootstrapping vshard• Done.
Теперь узел с приложением должен перейти в режим работы RW:
$ tt statusINSTANCE STATUS PID MODEmessage-queue-ee:app RUNNING 10841 RW
Помимо варианта локального запуска, приведенного выше, TQE(MQ) можно запустить в Docker. Этот способ позволяет запустить несколько экземпляров TQE(MQ) в кластерной конфигурации:
- Загрузите docker-образ командой (добавьте в реестр):
$ docker load < docker-message-queue-ee-vX.X.X.tar.gz
- Внесите изменения в файл настроек
compose.yamlиз основного пакета поставки, например укажите свои файлы с настройками TQE:
services:core:image: tarantool/message-queue-ee:latestpull_policy: if_not_presentplatform: linux/amd64command: ["tarantool", "--name", "core", "--config", "config.yml"]# Для указания пользовательских настроек создайте# файлы настроек, укажите их и раскомментируйте раздел `volumes`.# volumes:# - "./config.yml:/message-queue-ee/config.yml"# - "./instances.yml:/message-queue-ee/instances.yml"environment:AUTO_BOOTSTRAP: "true"ports:- "3301:3301"- "8081:8081"extra_hosts:- "host.docker.internal:host-gateway"
- После внесения изменений добавьте вручную тег
latestдля того, чтобы изменения применились при установке:
$ docker tag tarantool/message-queue-ee:vX.X.X tarantool/message-queue-ee:latest
- Запустите TQE:
$ docker compose up -d
- Определение параметров модуля API (gRPC-сервера):
$ cat > config.service.yml <<EOFapp_name: MESSAGE_QUEUE_EE_APIapp_version: testcore_host: 0.0.0.0core_port: 18184grpc_host: 0.0.0.0grpc_port: 18182producer:enabled: truetarantool:user: tqe_producer_userpass: passqueues:queue:connections:routers:- "localhost:3301"consumer:enabled: truepolling_timeout: 500mstarantool:user: tqe_consumer_userpass: passqueues:queue:connections:storage-1:- "localhost:3301"EOF
Отсутствие ошибок в терминале свидетельствует о правильной настройке модуля API (gRPC-сервера).
- Запуск модуля API (gRPC-сервера):
$ bin/message-queue-ee -d -config config.service.yml
В каталоге message-queue-ee/scripts расположены скрипты, с помощью которых можно проверить работоспособность приложения.
Для работы скриптов требуется установить утилиту grpcurl.
- Выполните команду:
$ ./scripts/test.sh localhost:18182Test passed.
Сообщение Test passed. свидетельствует о корректной установке и работе дистрибутива.
- При наличии ошибок в установке или работе приложения выполнение скрипта
test.shвыдаст подобное сообщение:
$ ./scripts/test.sh localhost:18182Test failed: message id expected "1", got "2".
Оно информирует о возникновении проблем и необходимости убедиться в корректности настроек на этапе конфигурации приложения.
- Для проверки публикации в очередь сообщений выполните команду:
$ grpcurl -plaintext -format text -d 'queue:"queue" messages:{ payload:"TestGeneratedMessage" metadata:{ key:"date" value:"121225" } }' \localhost:18182 tarantool.queue_ee.Producer/Produce
Ожидаемый ответ:
ids: 7427358492534505472is_duplicates: false
Для проверки подписки нужно выполнить следующую последовательность действий:
- Откройте двунаправленный поток командой:
$ grpcurl -plaintext -d @ \localhost:18182 tarantool.queue_ee.Consumer/Subscribe
- Отправьте запрос на подписку:
{"subscribe_request": {"queue": "queue", "cursor": ""}}
Ожидаемый ответ:
{"notifications":[{"cursor": "AQAAAAAAAAAJAAAAAAAAAHN0b3JhZ2UtMQAAwICKOwxm","message": {"id": "7358127929391316992","queue": "queue","payload": "SomeData","metadata": [{"key": "date","value": "121225"}],"timestamp": "1753167571459351000"}},]}
Совпадение идентификаторов сообщений (поля id) при выполнении публикации сообщения в очереди
и подписки на неё говорит о корректном завершении установки приложения и настройки очереди сообщений.