┌─┐ ║"│ └┬┘ ┌┼┐ │ ┌───────────┐ ┌────────┐ ┌──────┐ ┌───────────┐ ┌┴┐ │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│ ║"│ └───────────┘ └────────┘ └──────┘ └───────────┘ └┬┘ ┌┼┐ │ ┌┴┐