Files
Ubuntu_docs/Brokers/RabbitMQ_install.md
2025-10-02 18:16:29 +05:00

224 lines
9.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

****************************************************************************************************
Подключаемся к нужной машине
```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
<!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.14.2</version>
</dependency>
```
Также поставил 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
<repositories>
<repository>
<name>RabbitMQ</name>
<url>https://repo1.maven.org/maven2/com/rabbitmq/amqp-client/5.16.0</url>
<id>com.rabbitmq</id>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.16.0</version>
</dependency>
</dependencies>
```
Перезагружаем:
```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" иначе маршрутизация не сработает.