Планировщик
ERP
Здесь хранится заказ на выпуск насосов. Ваша программа отправляет команду в очередь.
Моя программа · publisher.py
Программа ещё не загружена.
Повтор этой кнопки отправит ту же команду с тем же commandId.
ERP → RabbitMQ → MES
Откройте соединение RabbitMQ через Pika и выясните, что произойдёт с заказом, если цех временно недоступен.
Подключитесь, чтобы открыть свою ERP и MES.
Планировщик
Здесь хранится заказ на выпуск насосов. Ваша программа отправляет команду в очередь.
Программа ещё не загружена.
Повтор этой кнопки отправит ту же команду с тем же commandId.
Независимый посредник
сообщений ожидают получателя
Только ваша лаборатория. UI показывает очередь и маршрут; отправляйте и принимайте заказы кнопками ERP и MES.
Отправлено ≠ выполнено
Подтверждение брокера говорит о приёме сообщения. Созданное задание нужно найти в MES.
Это подтверждение от получателя. В нашей программе его отправляют после сохранения задания. Без ACK сообщение может прийти снова.
Мы обрабатываем по одному сообщению, чтобы вы успели сравнить очередь и документы до и после действия.
Мастер цеха
Ваша программа получает команду и создаёт производственное задание. Насосы ещё не произведены.
Программа ещё не загружена.
Для опыта со сбоем: задание сохранится, подтверждение сообщения оборвётся.
ConnectionParameters задаёт host, port, vhost и вход; BlockingConnection открывает соединение, channel() создаёт канал. Exchange направляет сообщение по routing_key и правилу queue_bind. basic_get получает одну доставку, basic_ack подтверждает её delivery_tag.
Настройки записаны в начале скачанного Python-файла: HOST, PORT, VHOST, USERNAME, PASSWORD, EXCHANGE, QUEUE, ROUTING_KEY. 127.0.0.1:5672 — вход в туннель к настоящему RabbitMQ внутри среды исполнения. После сброса лаборатории скачайте новые файлы. Защита от дублей остаётся в MES.
Остановите MES. Передайте заказ из ERP. Где теперь сообщение? Появилось ли задание? Запустите MES и примите заказ.
Выберите следующий заказ, передайте его в очередь и остановите ERP. Сможет ли MES принять уже отправленную команду?
Пока третий заказ ещё не принят, оставьте в consumer только ACK. Загрузите и активируйте его, отправьте третий заказ и примите: очередь опустеет, а задания не будет. Верните и активируйте правильную программу. Для опыта 3 повторно отправьте тот же третий заказ.
Отправьте третий заказ. Нажмите «Принять со сбоем перед ACK». Сравните очередь и задания. Затем примите сообщение обычной кнопкой: появится ли второй документ?
Если все три задания уже созданы, повтор покажет прежние документы: это проверка идемпотентности. Для опыта «задания ещё нет» обратитесь к преподавателю; общий сброс затрагивает другие практики. Остановка действует только в вашей лаборатории. Панель управления остаётся доступной, документы сохраняются.
Сначала читайте результат в документах, затем объясняйте его по журналу.