Собственно, задача такова: "подружить" 2 сайта на Yii посредством протокола AMQP и клиента RabbitMQ в частности, конкретнее - для передачи новых данных (будем передавать сериализованные атрибуты модели) с одного сайта на другой, на котором будет производиться анализ и модерация этих данных с последующим принятием или отклонением (с оповещением первого сайта). То есть проще говоря "общение" между сайтами должно быть в двустороннем порядке.
Итак, ближе к делу. Все настройки по установке и инициализации RabbitMQ я выполнил (следуя инструкциям этой статьи), убедившись в работоспособности сервера (на тестовом примере с передачей сообщения 'Hello, buddy!'). Однако на практике столкнулся со следующей проблемой: в методе afterSave() модели (атрибуты которой нужно отправлять) прописал вызов функции, которая будет отвечать за отправку данных на "модерирующий" сайт; на сайте-получателе создал команду наследующую CConsoleCommand, по исполнении которой и должен произойти прием нужных данных с сохранением, однако консоль выбрасывает вот это исключение: exception 'AMQPQueueException' with message 'Server channel error: 404, message: NOT_FOUND - no exchange 'amq.product' in vhost '/'' in...
Теперь по коду. В модели откуда отправляются данные:
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- public function afterSave()
- {
- $this->sendRabbit();
- }
- public function sendRabbit()
- {
- $data['model_id'] = $this->id;
- $data['data'] = $this->attributes;
- $rabbit = new RabbitSender();
- return true;
- }
- return false;
- }