FFFactoryFlowintegration lab

ERP → RabbitMQ → MES

Заказ через очередь

Откройте соединение RabbitMQ через Pika и выясните, что произойдёт с заказом, если цех временно недоступен.

Ключ используется только в этой вкладке.

Подключитесь, чтобы открыть свою ERP и MES.

Планировщик

ERP

не подключено

Здесь хранится заказ на выпуск насосов. Ваша программа отправляет команду в очередь.

Моя программа · publisher.py

Программа ещё не загружена.

Повтор этой кнопки отправит ту же команду с тем же commandId.

Независимый посредник

RabbitMQ

—

сообщений ожидают получателя

Сначала подключитесь к лаборатории.

Только ваша лаборатория. UI показывает очередь и маршрут; отправляйте и принимайте заказы кнопками ERP и MES.


Отправлено ≠ выполнено

Подтверждение брокера говорит о приёме сообщения. Созданное задание нужно найти в MES.

Что такое ACK?

Это подтверждение от получателя. В нашей программе его отправляют после сохранения задания. Без ACK сообщение может прийти снова.

Почему приём по кнопке?

Мы обрабатываем по одному сообщению, чтобы вы успели сравнить очередь и документы до и после действия.

Мастер цеха

MES

не подключено

Ваша программа получает команду и создаёт производственное задание. Насосы ещё не произведены.

Моя программа · consumer.py

Программа ещё не загружена.

Для опыта со сбоем: задание сохранится, подтверждение сообщения оборвётся.

Производственные задания

Заданий пока нет.

Проследите одну команду

Выберите заказ в ERP после подключения.
Какое сообщение передаём и куда оно попадёт?
Что увидеть в коде Pika перед опытами?

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.

Сначала предположите — потом проверьте

1. Цех недоступен

Остановите MES. Передайте заказ из ERP. Где теперь сообщение? Появилось ли задание? Запустите MES и примите заказ.

2. Отправитель недоступен

Выберите следующий заказ, передайте его в очередь и остановите ERP. Сможет ли MES принять уже отправленную команду?

Дополнительно, перед опытом 3: ACK без сохранения

Пока третий заказ ещё не принят, оставьте в consumer только ACK. Загрузите и активируйте его, отправьте третий заказ и примите: очередь опустеет, а задания не будет. Верните и активируйте правильную программу. Для опыта 3 повторно отправьте тот же третий заказ.

3. Сохранено, но не подтверждено

Отправьте третий заказ. Нажмите «Принять со сбоем перед ACK». Сравните очередь и задания. Затем примите сообщение обычной кнопкой: появится ли второй документ?

Если все три задания уже созданы, повтор покажет прежние документы: это проверка идемпотентности. Для опыта «задания ещё нет» обратитесь к преподавателю; общий сброс затрагивает другие практики. Остановка действует только в вашей лаборатории. Панель управления остаётся доступной, документы сохраняются.

Что произошло с заказом

Сначала читайте результат в документах, затем объясняйте его по журналу.

Здесь появятся результаты выполнения ваших программ.