┌─┐ ║"│ └┬┘ ┌┼┐ │ ┌───────────┐ ┌────────┐ ┌──────┐ ┌───────────┐ ┌┴┐ │API_Service│ │RabbitMQ│ │Worker│ │SMS_Gateway│ User └─────┬─────┘ └───┬────┘ └──┬───┘ └─────┬─────┘ ╔══════╤═══════════════════════╗ │ │ │ │ ║ REF │ ║ │ │ │ │ ╟──────┘ ║ │ │ │ │ ║ ввод имени пользователя, ║ │ │ │ │ ║ эл. почты, ║ │ │ │ │ ║ номера телефона, ║ │ │ │ │ ║ нажатие кнопки регистрации ║ │ │ │ │ ║ на форме ║ │ │ │ │ ╚══════╪═══════════════════════╝ │ │ │ │ │ 𝟏 POST / HTTPS / {telnumber}}│ │ │ │ │ ─────────────────────────────> │ │ │ │ │ │ │ │ │ │ 𝟐 amqp protocol │ │ │ │ │ {telnumber, approve_code}}│ │ │ │ │ ───────────────────────────> │ │ │ │ │ │ │ │ 𝟑 отображаем приглашение │ │ │ │ │ ввести код из SMS │ │ │ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╔═══════╤═════╪════════════════════════╪═══════════════════════════════════╪═══════════════════════════════════╗ │ │ ║ LOOP │ бесконечный цикл опроса очереди и отправки сообщений │ ║ │ │ ╟───────┘ │ │ │ ║ │ │ ║ │ 𝟒 извлечение сообщений │ │ ║ │ │ ║ │ по одному │ │ ║ │ │ ║ │ <─────────────────────── │ ║ │ │ ║ │ │ │ ║ │ │ ║ │ │ │ ║ │ │ ║ ╔═══════╤════════════════════════╪═══════════════════════════════════╪═════════════════════════╗ ║ │ │ ║ ║ LOOP │ │ │ ║ ║ │ │ ║ ╟───────┘ │ │ ║ ║ │ │ ║ ║ │ │ 𝟓 отправка сообщения, │ ║ ║ │ │ ║ ║ │ │ в случае ошибки отправки │ ║ ║ │ │ ║ ║ │ │ сообщения продолжать отправлять │ ║ ║ │ │ ║ ║ │ │ его бесконечно, затем │ ║ ║ │ │ ║ ║ │ │ извлекать из очереди следующее │ ║ ║ │ │ ║ ║ │ │ сообщение итд. │ ║ ║ │ │ ║ ║ │ │ ──────────────────────────────────> ║ ║ │ │ ║ ║ │ │ │ ║ ║ │ │ ║ ║ │ │ │ ║ ║ │ │ ║ ║ │ ╔══════╤═══════════════╪═══════════════════════════════════╪═══════════════╗ ║ ║ │ │ ║ ║ │ ║ ALT │ │ │ ║ ║ ║ │ │ ║ ║ │ ╟──────┘ │ │ ║ ║ ║ │ │ ║ ║ │ ║ │ 𝟔 get 200 code (здесь нужен break)│ ║ ║ ║ │ │ ║ ║ │ ║ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ║ ║ ║ │ │ ║ ║ │ ║ │ │ ║ ║ ║ │ │ ║ ║ │ ║ │ │ ║ ║ ║ │ │ ║ ║ │ ║ ╔════════╤═══╪════════════════════╗ │ ║ ║ ║ │ │ ║ ║ │ ║ ║ BREAK │ │ ║ │ ║ ║ ║ │ │ ║ ║ │ ║ ╟────────┘ │ ║ │ ║ ║ ║ │ │ ║ ║ │ ║ ║ │────┐ ║ │ ║ ║ ║ │ │ ║ ║ │ ║ ║ │ │ 𝟕 end loop ║ │ ║ ║ ║ │ │ ║ ║ │ ║ ║ │<───┘ ║ │ ║ ║ ║ │ │ ║ ║ │ ║ ╚════════════╪════════════════════╝ │ ║ ║ ║ │ │ ║ ║ │ ╠══════════════════════╪═══════════════════════════════════╪═══════════════╣ ║ ║ │ │ ║ ║ │ ║ │ │ ║ ║ ║ │ │ ║ ║ │ ║ │ 𝟖 get 502 code │ ║ ║ ║ │ │ ║ ║ │ ║ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ║ ║ ║ │ │ ║ ║ │ ╚══════════════════════╪═══════════════════════════════════╪═══════════════╝ ║ ║ │ │ ║ ╚═══════╪════════════════════════╪═══════════════════════════════════╪═════════════════════════╝ ║ │ │ ╚═════════════╪════════════════════════╪═══════════════════════════════════╪═══════════════════════════════════╝ User ┌─────┴─────┐ ┌───┴────┐ ┌──┴───┐ ┌─────┴─────┐ ┌─┐ │API_Service│ │RabbitMQ│ │Worker│ │SMS_Gateway│ ║"│ └───────────┘ └────────┘ └──────┘ └───────────┘ └┬┘ ┌┼┐ │ ┌┴┐