224 lines
9.1 KiB
Markdown
224 lines
9.1 KiB
Markdown
****************************************************************************************************
|
||
Подключаемся к нужной машине
|
||
```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" иначе маршрутизация не сработает.
|