**************************************************************************************************** Подключаемся к нужной машине ```sh ssh ivanov_i@10.101.1.3 -p 22 ``` Установка сервиса обмена сообщениями RabbitMQ – менеджер сообщений (message broker), написан на Erlang, ближайший аналог в AWS – SQS. По документации из: https://rtfm.co.ua/ru/rabbitmq-zapusk-opisanie-primery/ ```sh sudo apt-get update && sudo apt-get dist-upgrade && sudo apt install rabbitmq-server ``` Создаём пользователя и задаём пароль ```sh sudo rabbitmqctl list_users && sudo rabbitmqctl add_user ivanov_i KGf4nxT8vxZWv3jqNasP && sudo rabbitmqctl set_user_tags ivanov_i administrator && sudo rabbitmqctl set_permissions -p / ivanov_i ".*" ".*" ".*" && sudo rabbitmqctl change_password ivanov_i KGf4nxT8vxZWv3jqNasP ``` Посмотреть список используемых плагинов: ```sh sudo rabbitmq-plugins list ``` Активируем плагин rabbitmq_management для наблюдения за системой по HTTP https://www.rabbitmq.com/management.html https://thewebland.net/development/devops/chast-3-interfejs-upravleniya-rabbitmq/#:~:text=RabbitMQ%20Management%20–%20это%20удобный%20интерфейс,и%20отправлять%20%2F%20получать%20сообщения%20вручную. ```sh sudo rabbitmq-plugins enable rabbitmq_management ``` rabbitmq_management активирует поддержку API на порту 15672: http://192.168.0.144:15672 http://10.1.7.70:15672 http://192.168.0.83:15672 Но для активации нужно добавить пользователя, смотрим пользователей: ```sh sudo rabbitmqctl list_users sudo rabbitmqctl add_user admin paRabbit! или test test для локального тестового сервера sudo rabbitmqctl set_user_tags admin administrator sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" ``` Также можно создать пользователя для публикации сообщений но уже это можно сделать через WEB интерфейс: producer lgGDWAJEwI для guest с паролем: efewG!4ev Александра: alex jefruf!43 Теперь можно логинется по test test поменять пароль можно: https://kb.vmware.com/s/article/323520#:~:text=Log%20in%20to%20the%20RabbitMQ,host%20where%20RabbitMQ%20is%20installed. Или так можно поменять пароль: sudo rabbitmqctl change_password zenoss New-Password producer: клиент, выполняющий отправку сообщения queue: собственно очередь сообщений consumer: клиент, получающий сообщения из очереди exchange: получает сообщения от producer, и отправялет их в очереди в соответствии с его типом (см. тут https://www.rabbitmq.com/tutorials/tutorial-three-python.html) Дальше можно пробовать отправлять данные в очередь используя допустим java библиотеку урок: https://www.youtube.com/watch?v=6lPK_LgTZ9Y https://www.rabbitmq.com/devtools.html : Создаю Maven проект в консоли: ```sh cd O:\projects\Workspace_Java\ mvn archetype:generate -DgroupId=kz.istt.app -DartifactId=TransitToRabbitMQ -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false ``` Открываю его в idea64 и добавляю в POM следующую зависемость из https://mvnrepository.com/artifact/com.rabbitmq/amqp-client: ```xml com.rabbitmq amqp-client 5.14.2 ``` Также поставил C:\Program Files\Java\jdk-14.0.2 а то не запускалось, также просит рут права для IntelliJ IDEA. Урок создания maven проекта: https://devcolibri.com/unit/урок-1-подготовка-и-создание-maven-проекта/ или https://www.jetbrains.com/idea/guide/tutorials/working-with-maven/creating-a-project/ Добавил в POM файл: ```xml RabbitMQ https://repo1.maven.org/maven2/com/rabbitmq/amqp-client/5.16.0 com.rabbitmq false true com.rabbitmq amqp-client 5.16.0 ``` Перезагружаем: ```sh sudo service rabbitmq-server restart ``` **************************************************************************************************** Установка Shovels Plugin для RabbitMQ (лопата) по мотивам из: https://www.rabbitmq.com/docs/shovel Активирую плагин командой: ```sh sudo rabbitmq-plugins enable rabbitmq_shovel && sudo rabbitmq-plugins enable rabbitmq_shovel_management ``` Настраиваю Shovels Dynamic плагин в RabbitMQ через командную строку: ```sh sudo rabbitmqctl set_parameter shovel kaz_to_kaz '{ "src-protocol": "amqp091", "src-uri": "amqp://admin:paRabbit!@127.0.0.1:20000/transportation", "src-queue": "TO_KAZ", "dest-protocol": "amqp091", "dest-uri": "amqp://admin:paRabbit!@10.101.1.11:20000/playground", "dest-exchange": "swap", "dest-exchange-key": ".KAZ.", "ack-mode": "on-confirm", "publish-properties": { "delivery_mode": 2 } }' ``` Для Росии такие настройки: ```sh sudo rabbitmqctl set_parameter shovel kaz_to_rus '{ "src-protocol": "amqp091", "src-uri": "amqp://admin:paRabbit!@127.0.0.1:20000/transportation_rus", "src-queue": "TO_RUS", "dest-protocol": "amqp091", "dest-uri": "amqp://iktt_kaz:jkrjHL7xj7PrW1D@192.168.89.133:20000/playground", "dest-exchange": "swap", "dest-exchange-key": "KZ", "ack-mode": "on-confirm", "publish-properties": { "delivery_mode": 2 } }' ``` Для Беларусии такие настройки: ```sh sudo rabbitmqctl set_parameter shovel kaz_to_blr '{ "src-protocol": "amqp091", "src-uri": "amqp://admin:paRabbit!@127.0.0.1:20000/transportation_blr", "src-queue": "TO_BLR", "dest-protocol": "amqp091", "dest-uri": "amqp://KZ_IKTT:DK34xDNlZQfQ551k@192.168.90.133:20000/plumber", "dest-exchange": "eec.swap", "dest-exchange-key": "KZ", "ack-mode": "on-confirm", "publish-properties": { "delivery_mode": 2 } }' ``` Для Армении такие настройки: ```sh sudo rabbitmqctl set_parameter shovel kaz_to_arm '{ "src-protocol": "amqp091", "src-uri": "amqp://admin:password@127.0.0.1:20000/transportation_arm", "src-queue": "TO_ARM", "dest-protocol": "amqp091", "dest-uri": "amqp://kz_istt:password@192.168.89.158:20000/transportation", "dest-exchange": "swap_kz", "dest-exchange-key": "KZ_ISTT", "ack-mode": "on-confirm", "publish-properties": { "delivery_mode": 2 } }' ``` Для отправки в Кыргызстана (таможенная инфраструктура) ```sh sudo rabbitmqctl set_parameter shovel kaz_to_kgz '{ "src-protocol": "amqp091", "src-uri": "amqp://admin:paRabbit!@127.0.0.1:20000/transportation_kgz", "src-queue": "TO_KGZ", "dest-protocol": "amqp091", "dest-uri": "amqp://kz_istt:kzistt123EX@192.168.70.133:20000/kaz_transportation", "dest-queue": "KAZ", "ack-mode": "on-confirm", "publish-properties": { "delivery_mode": 2 } }' ``` Удалять так: ```sh sudo rabbitmqctl clear_parameter shovel kaz_to_kgz ``` НЕ ИСПОЛЬЗОВАТЬ Для отправки из Киргизии нам то такие настройки: ```sh sudo rabbitmqctl set_parameter shovel kgz_to_kaz '{ "src-protocol": "amqp091", "src-uri": "amqp://admin:pfta2OFt@127.0.0.1:20000/transportation_kaz", "src-queue": "TO_KAZ", "dest-protocol": "amqp091", "dest-uri": "amqp://kg_amap:qrd2fjEjkegdi7bfb@192.168.70.134:20000/transportation_kgz", "dest-exchange": "swap", "dest-exchange-key": "KGZ", "ack-mode": "on-confirm", "publish-properties": { "delivery_mode": 2 } }' ``` Удалять так: ```sh sudo rabbitmqctl clear_parameter shovel kgz_to_kaz ``` Чтобы проверить текущие параметры Shovel: ```sh sudo rabbitmqctl list_parameters ``` А также можно взглянуть что создалось через WEB интерфейс Не забывать что Exchange: swap должен быть не "direct" а как "topic" иначе маршрутизация не сработает.