{"id":101718,"date":"2025-03-16T02:23:41","date_gmt":"2025-03-15T22:53:41","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/laravel-microservices-with-rabbitmq-and-docker-54ap\/"},"modified":"2025-03-16T02:23:41","modified_gmt":"2025-03-15T22:53:41","slug":"laravel-microservices-with-rabbitmq-and-docker-54ap","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/laravel-microservices-with-rabbitmq-and-docker-54ap\/","title":{"rendered":"\u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u0633 \u0647\u0627\u06cc \u0644\u0627\u0631\u0627\u0648\u0644 \u0628\u0627 RabbitMQ \u0648 Docker."},"content":{"rendered":"<div data-article-id=\"2052439\" id=\"article-body\">\n<p>\u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u062f\u0631\u06a9 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u060c \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u0645\u0639\u0645\u0627\u0631\u06cc \u0633\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0631\u0627 \u062a\u0647\u06cc\u0647 \u06a9\u0646\u06cc\u062f \u060c \u0628\u062f\u0648\u0646 \u062a\u0645\u0627\u0645 \u062f\u0631\u0627\u0645 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0627 \u0622\u0646 \u067e\u06cc\u0634 \u0645\u06cc \u0631\u0648\u062f. \u0645\u0627 \u0628\u0627 \u06cc\u06a9 \u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0631\u0627\u06cc \u0647\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f. \u062e\u0648\u0628 \u060c \u0628\u06af\u0630\u0627\u0631\u06cc\u062f \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f <\/p>\n<p>\u0627\u0648\u0644\u06cc\u0646 \u0642\u062f\u0645 \u0645\u06cc \u062f\u0627\u0646\u0633\u062a \u0648 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u06cc\u06a9 \u0645\u062e\u0632\u0646 Laravel \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0635\u0641\u062d\u0647 \u0631\u0633\u0645\u06cc \u0622\u0646 Laravel Opalitical \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0633\u067e\u0633 Docker (\u0645\u0646 \u0627\u0632 Docker Desktop \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0645 \u0632\u06cc\u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0646 \u0628\u0633\u06cc\u0627\u0631 \u0622\u0633\u0627\u0646 \u0627\u0633\u062a) \u0627\u06af\u0631 \u0627\u0632 \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u060c \u0628\u0627\u06cc\u062f \u0628\u0647 Docker Official Linux \u0628\u0631\u0648\u06cc\u062f.<\/p>\n<p>\u06cc\u06a9 \u0628\u0627\u0631 \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0628\u0627 Enviroment \u0628\u0648\u062f \u060c \u0628\u0631\u0627\u06cc \u0622\u0645\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u0627 \u0631\u0641\u062a\u06cc\u0645! \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0648\u0628\u0644\u0627\u06af \u0645\u0627 \u0628\u0627 \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0633\u062a\u0648\u0631\u0627\u0646 \u0628\u0647 Buesine \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u060c \u06a9\u0647 \u0627\u0633\u0627\u0633\u0627\u064b \u0627\u0632 \u0637\u0631\u06cc\u0642 API-Manager (\u0645\u0634\u062a\u0631\u06cc) \u0645\u0627 \u0628\u0647 \u06a9\u0644\u06cc\u0647 \u062e\u062f\u0645\u0627\u062a \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u0633 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0648\u0633\u06cc\u0642\u06cc \u060c \u0641\u0631\u0648\u0634\u06af\u0627\u0647 \u0647\u0627\u06cc \u0645\u0648\u0627\u062f \u063a\u0630\u0627\u06cc\u06cc \u0648 \u062f\u0633\u062a\u0648\u0631 \u0627\u0644\u0639\u0645\u0644 \u0647\u0627 \u0647\u0633\u062a\u0646\u062f \u060c \u0646\u0627\u0645\u06cc\u062f\u06cc\u0645. \u0627\u06cc\u0646 \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633\u0647\u0627 \u0628\u0627 \u062e\u0648\u062f \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f \u0648 \u0633\u067e\u0633 \u067e\u0627\u0633\u062e\u06cc \u0628\u0647 \u0645\u062f\u06cc\u0631 API \u0628\u0627\u0632 \u0645\u06cc \u06af\u0631\u062f\u0646\u062f \u060c \u0647\u0645\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc \u0631\u0627 \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc \u0622\u0648\u0631\u062f. \u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f (\u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0645\u0627\u0698\u0648\u0644)<\/p>\n<p>\u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u0627 \u0645\u0627\u0646\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>api-manager\ncousine\ngrocery-store\nrecipes\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u06cc \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0633\u0631\u0648\u0631 RabbitMQ \u060c \u0628\u0631\u0627\u06cc \u0628\u0631\u0642\u0631\u0627\u0631\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0627\u0632 \u0645\u062d\u06cc\u0637 \u0645\u062d\u0644\u06cc \u0627\u0633\u062a. \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632:<br \/><code>docker run --name rabbitmq bitnami\/rabbitmq:latest<\/code><\/p>\n<p>\u062e\u0648\u0628 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0622\u0645\u0627\u062f\u0647 &#8230; \u067e\u0633 \u0627\u0632 \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u0646 \u0647\u0645\u0647 \u060c \u0632\u0645\u0627\u0646 \u0627\u06cc\u062c\u0627\u062f \u067e\u0631\u0648\u0646\u062f\u0647 .yaml \u0645\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u067e\u0631\u0648\u0698\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646\u062c\u0627 \u0631\u0627 \u062a\u0631\u06a9 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f: <\/p>\n<p>\u0628\u0631\u0627\u06cc \u062e\u062f\u0645\u0627\u062a API-Manager \u0648 Anothers \u060c \u0645\u0627 \u0628\u0627 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u067e\u0631\u0648\u0646\u062f\u0647 docker-compose \u0628\u0627 \u0646\u0627\u0645 \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u06cc\u0645: <br \/><code>docker-compose.yml<\/code><br \/>\u0634\u0645\u0627 \u0686\u06cc\u0632\u06cc \u0634\u0628\u06cc\u0647 \u0628\u0647 <\/p>\n<p><\/p>\n<p>\u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0631\u06cc\u0634\u0647 \u0633\u0631\u0648\u06cc\u0633 \u06cc\u0627 \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0628\u0627\u0634\u062f<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u060c \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0633\u0646\u062f \u0622\u0647\u0646\u06af\u0633\u0627\u0632\u06cc Docker \u0631\u0627 \u0628\u0647 \u0634\u0631\u062d \u0632\u06cc\u0631 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>services:\n  db:\n    image: mysql:latest\n    container_name: mysql\n    ports:\n      - \"3306:3306\"\n    volumes:\n      - mysql-volumes:\/var\/lib\/mysql\n    environment:\n      MYSQL_ROOT_PASSWORD: secret\n      MYSQL_DATABASE: laravel\n    networks:\n      - app-network\n\n  laravel-app:\n    build:\n      context: .\/docker\/php\n    container_name: laravel-app\n    volumes:\n      - .:\/home\/source\/main\n    working_dir: \/home\/source\/main\n    networks:\n      - app-network\n\n  nginx:\n    build:\n      context: .\/docker\/nginx\n    container_name: todo-nginx\n    ports:\n      - \"8000:80\"\n    depends_on:\n      - laravel-app\n    volumes:\n      - .:\/home\/source\/main\n    networks:\n      - app-network\n\nvolumes:\n  mysql-volumes:\n    driver: local\nnetworks:\n  app-network:\n    driver: bridge\n    name: app-network\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0633\u0631\u0648\u06cc\u0633. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627:<\/p>\n<p>\u067e\u0633\u0631 \u0639\u0645\u0648\u06cc<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>services:\n  db:\n    image: mysql:latest\n    container_name: mysql-cousine\n    ports:\n      - \"3307:3306\"\n    volumes:\n      - mysql-volumes-cousine:\/var\/lib\/mysql\n    environment:\n      MYSQL_ROOT_PASSWORD: secret\n      MYSQL_DATABASE: laravel_cousine\n    networks:\n      - app-network\n\n  laravel-app:\n    build:\n      context: .\/docker\/php\n    container_name: micro-cousine\n    volumes:\n      - .:\/home\/source\/main\n    working_dir: \/home\/source\/main\n    networks:\n      - app-network\n\n  nginx:\n    build:\n      context: .\/docker\/nginx\n    container_name: todo-nginx-cousine\n    ports:\n      - \"8001:80\"\n    depends_on:\n      - laravel-app\n    volumes:\n      - .:\/home\/source\/main\n    networks:\n      - app-network\n\nvolumes:\n  mysql-volumes-cousine:\n    driver: local\nnetworks:\n  app-network:\n    driver: bridge\n    name: app-network\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0633\u062a\u0648\u0631 \u0627\u0644\u0639\u0645\u0644 \u0647\u0627<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>services:\n  db:\n    image: mysql:latest\n    container_name: mysql-recipes\n    ports:\n      - \"3309:3306\"\n    volumes:\n      - mysql-volumes-recipes:\/var\/lib\/mysql\n    environment:\n      MYSQL_ROOT_PASSWORD: secret\n      MYSQL_DATABASE: laravel_recipes\n    networks:\n      - app-network\n\n  laravel-app:\n    build:\n      context: .\/docker\/php\n    container_name: micro-recipes\n    volumes:\n      - .:\/home\/source\/main\n    working_dir: \/home\/source\/main\n    networks:\n      - app-network\n\n  nginx:\n    build:\n      context: .\/docker\/nginx\n    container_name: todo-nginx-recipes\n    ports:\n      - \"8003:80\"\n    depends_on:\n      - laravel-app\n    volumes:\n      - .:\/home\/source\/main\n    networks:\n      - app-network\n\nvolumes:\n  mysql-volumes-recipes:\n    driver: local\nnetworks:\n  app-network:\n    driver: bridge\n    name: app-network\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0641\u0631\u0648\u0634\u06af\u0627\u0647 \u0645\u0648\u0627\u062f \u063a\u0630\u0627\u06cc\u06cc<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>services:\n  db:\n    image: mysql:latest\n    container_name: mysql-grosery-store\n    ports:\n      - \"3308:3306\"\n    volumes:\n      - mysql-volumes-grosery-store:\/var\/lib\/mysql\n    environment:\n      MYSQL_ROOT_PASSWORD: secret\n      MYSQL_DATABASE: laravel_grocery\n    networks:\n      - app-network\n\n  laravel-app:\n    build:\n      context: .\/docker\/php\n    container_name: micro-grosery-store\n    volumes:\n      - .:\/home\/source\/main\n    working_dir: \/home\/source\/main\n    networks:\n      - app-network\n\n  nginx:\n    build:\n      context: .\/docker\/nginx\n    container_name: todo-nginx-grosery-store\n    ports:\n      - \"8002:80\"\n    depends_on:\n      - laravel-app\n    volumes:\n      - .:\/home\/source\/main\n    networks:\n      - app-network\n\nvolumes:\n  mysql-volumes-grosery-store:\n    driver: local\nnetworks:\n  app-network:\n    driver: bridge\n    name: app-network\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0633\u067e\u0633 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0633\u0631\u0648\u06cc\u0633: <br \/><code>docker compose up<\/code><\/p>\n<p>\u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0647\u0631 \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0628\u0627 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f \u060c \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u06a9\u0646\u0633\u0648\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0647 \u0648 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f. <\/p>\n<p><em>\u0645\u0647\u0645: \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0638\u0631\u0641 \u062e\u0648\u062f \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f \u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u06a9\u0645\u06a9 \u0647\u0632\u06cc\u0646\u0647 \u060c \u0627\u06cc\u062c\u0627\u062f \u06a9\u0627\u0631\u0628\u0631 \u0648 \u063a\u06cc\u0631\u0647 \u0631\u0627 \u062f\u0647\u06cc\u062f.<\/em><\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u0644\u062d\u0638\u0647 \u0628\u0647 \u0644\u062d\u0638\u0647 \u0628\u0631\u0627\u06cc \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u0648 \u062a\u0646\u0638\u06cc\u0645 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u060c \u0645\u062f\u06cc\u0631 API \u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc \u0631\u0627 \u0627\u062f\u0627\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f \u060c \u0633\u067e\u0633 \u0627\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 (\u0628\u0648\u06cc\u0646 \u060c \u0641\u0631\u0648\u0634\u06af\u0627\u0647 \u0647\u0627\u06cc \u0645\u0648\u0627\u062f \u063a\u0630\u0627\u06cc\u06cc \u060c \u062f\u0633\u062a\u0648\u0631 \u0627\u0644\u0639\u0645\u0644 \u0647\u0627) \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code><?php namespace App\\Http\\Controllers;\n\nuse App\\Jobs\\Cousine\\CreateCousineJob;\nuse App\\Jobs\\Cousine\\DeleteCousineJob;\nuse App\\Jobs\\Cousine\\FindOneCousineJob;\nuse App\\Jobs\\Cousine\\GetCousineJob;\nuse App\\Jobs\\Cousine\\UpdateCousineJob;\nuse App\\Models\\Cousine;\nuse App\\Services\\rabbitmq\\ConsumeMQ;\nuse App\\Services\\rabbitmq\\SendMQ;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Http;\n\nclass CousineController extends Controller\n{\n    \/**\n     * Display a listing of the resource.\n     *\/\n    public function index()\n    {\n        $response = Http::get('http:\/\/nginx\/api\/cousine');\n        if ($response-?>successful()) {\n            return response()-&gt;json($response-&gt;json(), 200);\n        } else {\n            return response()-&gt;json(['error' =&gt; 'No se pudieron obtener los datos'], $response-&gt;status());\n        }\n    }\n\n    \/**\n     * Store a newly created resource in storage.\n     *\/\n    public function store(Request $request)\n    {\n        SendMQ::handle('send_store_cousine_queue','send_store_cousine_exchange','cousine_key', $request-&gt;all());\n        SendMQ::close();\n\n        return response()-&gt;json(['message' =&gt; 'Mensaje enviado correctamente']);\n    }\n\n    \/**\n     * Display the specified resource.\n     *\/\n    public function show(string $id)\n    {\n        $response = Http::get('http:\/\/nginx\/api\/cousine\/'.$id);\n        if ($response-&gt;successful()) {\n            return response()-&gt;json($response-&gt;json(), 200);\n        } else {\n            return response()-&gt;json(['error' =&gt; 'No se pudieron obtener los datos'], $response-&gt;status());\n        }\n    }\n\n\n\n\n    \/**\n     * Update the specified resource in storage.\n     *\/\n    public function update(Request $request, string $id)\n    {\n        $payload = [\n            'order_number' =&gt; $request-&gt;order_number,\n            'status_id' =&gt; $request-&gt;status_id,\n            'id' =&gt; $id\n        ];\n\n        \/\/ Despachar el job para actualizar una receta espec\u00edfica\n        SendMQ::handle('send_update_cousine_queue','send_update_cousine_exchange','cousine_key_update', $payload);\n        SendMQ::close();\n    }\n\n    public function updateWithIngredientsUpdated(Request $request, string $id)\n    {\n        $payload = [\n            'order_number' =&gt; $request-&gt;order_number,\n            'status_id' =&gt; $request-&gt;status_id,\n            'recipe_id' =&gt; $request-&gt;recipe_id,\n            'id' =&gt; $id\n        ];\n\n        \/\/ Despachar el job para actualizar una receta espec\u00edfica\n        SendMQ::handle('send_update_cousine_ingredient_queue','send_update_cousine_ingredient_exchange','cousine_key_update_ingredient', $payload);\n        SendMQ::close();\n    }\n\n\n\n    \/**\n     * Remove the specified resource from storage.\n     *\/\n    public function destroy(string $id)\n    {\n        DeleteCousineJob::dispatch($id);\n        return response()-&gt;json(['message' =&gt; 'Cousine deleted'], 200);\n    }\n}\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0644\u0647 \u0645\u06cc \u062f\u0627\u0646\u0645 &#8230; \u0633\u0648\u0627\u0644 \u0634\u0645\u0627 \u0627\u06cc\u0646 \u0627\u0633\u062a \u00bf\u06a9\u0644\u0627\u0633 SendMQ \u0631\u0627 \u0627\u0632 \u06a9\u062c\u0627 \u0645\u06cc \u06af\u06cc\u0631\u0645\u061f<br \/>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u060c \u0645\u0646 \u0645\u06cc \u062e\u0648\u0627\u0647\u0645 \u0646\u0634\u0627\u0646 \u062f\u0647\u0645 \u060c \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0627\u0632 \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u0647\u0627 \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f \u060c \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u06a9\u0647 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0627 \u0628\u0627 RabbitMQ \u06cc\u0627 Kafka \u06cc\u0627 SQS \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f \u060c \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u06a9\u0627\u0631\u06af\u0631\u062f\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0631\u06a9\u06cc\u0628 \u06a9\u0646\u06cc\u062f \u0628\u0647 \u0634\u0645\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u060c \u0645\u0646 \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0648 \u0628\u0627 2 \u0633\u0631\u0648\u06cc\u0633 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0645: ConsumEMQ \u0648 SendMQ \u060c \u0647\u0631\u06a9\u062f\u0627\u0645 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0631 \u0639\u0647\u062f\u0647 \u062f\u0627\u0631\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u06a9\u062f \u0628\u06af\u0630\u0627\u0631\u06cc\u062f: <br \/>SENDMQ: \u06a9\u0644\u0627\u0633<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code><?php namespace App\\Services\\rabbitmq;\n\nuse PhpAmqpLib\\Connection\\AMQPStreamConnection;\nuse PhpAmqpLib\\Message\\AMQPMessage;\n\nclass SendMQ\n{\n    protected static $connection;\n    protected static $channel;\n\n    \/**\n     * Establece la conexi&oacute;n a RabbitMQ y declara el canal de conexi&oacute;n.\n     *\n     * Si ya existe una conexi&oacute;n, no hace nada.\n     *\n     * @return void\n     *\/\n    protected static function connect()\n    {\n        if (is_null(self::$connection)) {\n            self::$connection = new AMQPStreamConnection(\n                env('AMQP_HOST', 'localhost'),\n                env('AMQP_PORT', 5672),\n                env('AMQP_USER', 'bryan'),\n                env('AMQP_PASSWORD', '123456'),\n                env('AMQP_VHOST', \"https:\/\/dev.to\/\")\n            );\n            self::$channel = self::$connection-?>channel();\n        }\n    }\n\n    \/**\n     * Envia un mensaje a la cola de mensajeria indicada.\n     *\n     * @param string $queueName   Nombre de la cola de mensajeria.\n     * @param string $exchangeName Nombre de la exchange de mensajeria.\n     * @param string $routingKey   Clave de routing para la cola especificada.\n     * @param mixed  $data         Contenido del mensaje.\n     *\/\n    public static function handle($queueName, $exchangeName, $routingKey, $data)\n    {\n        self::connect();\n        self::$channel-&gt;exchange_declare($exchangeName, 'direct', false, false, false);\n        self::$channel-&gt;queue_declare($queueName, false, false, false, false);\n        self::$channel-&gt;queue_bind($queueName, $exchangeName, $routingKey);\n        $msg = new AMQPMessage(json_encode($data));\n        self::$channel-&gt;basic_publish($msg, $exchangeName, $routingKey);\n    }\n\n    \/**\n     * Cierra la conexi n a RabbitMQ.\n     *\n     * Este m todo debe ser llamado cuando se haya terminado\n     * de enviar mensajes y se desee liberar los recursos\n     * relacionados con la conexi n.\n     *\/\n    public static function close()\n    {\n        if (self::$channel) {\n            self::$channel-&gt;close();\n        }\n        if (self::$connection) {\n            self::$connection-&gt;close();\n        }\n    }\n}\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0631\u0641\u06cc\u0642<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code><?php namespace App\\Services\\rabbitmq;\n\nuse App\\Http\\Controllers\\CousineController;\nuse Illuminate\\Support\\Facades\\Log;\nuse PhpAmqpLib\\Connection\\AMQPStreamConnection;\nuse PhpAmqpLib\\Message\\AMQPMessage;\n\nclass ConsumeMQ\n{\n    protected static $connection;\n    protected static $channel;\n    protected static $receivedData = []; \/\/ Variable est&aacute;tica para almacenar datos\n\n    protected static function connect()\n    {\n        if (is_null(self::$connection)) {\n            self::$connection = new AMQPStreamConnection(\n                env('AMQP_HOST', 'localhost'),\n                env('AMQP_PORT', 5672),\n                env('AMQP_USER', 'bryan'),\n                env('AMQP_PASSWORD', '123456'),\n                env('AMQP_VHOST', \"https:\/\/dev.to\/\")\n            );\n            self::$channel = self::$connection-?>channel();\n        }\n    }\n\n    public static function handle($queueName)\n    {\n        self::connect();\n\n        \/\/ Declarar la cola\n        self::$channel-&gt;queue_declare($queueName, false, false, false, false);\n\n        \/\/ Callback para manejar los mensajes recibidos\n        $msgCallback = function (AMQPMessage $msg) {\n            Log::info(' [x] Recibiendo: ' . $msg-&gt;body);\n\n            \/\/ Almacenar el mensaje recibido\n            $list = json_decode($msg-&gt;body, true);\n            CousineController::setDataList($list);\n        };\n\n        \/\/ Configurar el consumidor\n        self::$channel-&gt;basic_consume($queueName, '', false, true, false, false, $msgCallback);\n\n        \/\/ Mantener el consumidor activo hasta que se detenga\n        echo \" [*] Waiting for messages. To exit press CTRL+C\\n\";\n        while (self::$channel-&gt;is_consuming()) {\n            self::$channel-&gt;wait();\n        }\n\n        return self::$receivedData; \/\/ Retornar los datos recibidos\n    }\n\n    public static function getReceivedData()\n{\n    return self::$receivedData;\n}\n\n    public static function close()\n    {\n        if (self::$channel) {\n            self::$channel-&gt;close();\n        }\n        if (self::$connection) {\n            self::$connection-&gt;close();\n        }\n    }\n}\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0633\u067e\u0633 \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0645\u0628\u0627\u062f\u0644\u0647 \u0645\u0627 \u0631\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u0645. \u0631\u0648\u06cc *<em>\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc *<\/em> \u067e\u0648\u0634\u0647 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627 \u0646\u0627\u0645\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0627\u0631\u062a\u0628\u0627\u0637 \u0634\u0645\u0627 \u0628\u0627 RabbitMQ \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f: amqp.php. \u0632\u0645\u06cc\u0646\u0647 \u0628\u0639\u062f\u06cc \u0627\u0633\u062a<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>\nreturn [\n\n    \/*\n    |--------------------------------------------------------------------------\n    | Define which configuration should be used\n    |--------------------------------------------------------------------------\n    *\/\n\n    'use' =&gt; env('AMQP_ENV', 'production'),\n\n    \/*\n    |--------------------------------------------------------------------------\n    | AMQP properties separated by key\n    |--------------------------------------------------------------------------\n    *\/\n\n    'properties' =&gt; [\n\n        'production' =&gt; [\n            'host'                  =&gt; env('AMQP_HOST', 'localhost'),\n            'port'                  =&gt; env('AMQP_PORT', 5672),\n            'username'              =&gt; env('AMQP_USER', 'myuser'),\n            'password'              =&gt; env('AMQP_PASSWORD', 'mypass'),\n            'vhost'                 =&gt; env('AMQP_VHOST', \"https:\/\/dev.to\/\"),\n            'connect_options'       =&gt; [],\n            'ssl_options'           =&gt; [],\n\n            'exchange'              =&gt; 'amq.topic',\n            'exchange_type'         =&gt; 'topic',\n            'exchange_passive'      =&gt; false,\n            'exchange_durable'      =&gt; true,\n            'exchange_auto_delete'  =&gt; false,\n            'exchange_internal'     =&gt; false,\n            'exchange_nowait'       =&gt; false,\n            'exchange_properties'   =&gt; [],\n\n            'queue_force_declare'   =&gt; false,\n            'queue_passive'         =&gt; false,\n            'queue_durable'         =&gt; true,\n            'queue_exclusive'       =&gt; false,\n            'queue_auto_delete'     =&gt; false,\n            'queue_nowait'          =&gt; false,\n            'queue_properties'      =&gt; ['x-ha-policy' =&gt; ['S', 'all']],\n\n            'consumer_tag'          =&gt; '',\n            'consumer_no_local'     =&gt; false,\n            'consumer_no_ack'       =&gt; false,\n            'consumer_exclusive'    =&gt; false,\n            'consumer_nowait'       =&gt; false,\n            'consumer_properties'   =&gt; [],\n            'timeout'               =&gt; 0,\n            'persistent'            =&gt; false,\n            'publish_timeout'       =&gt; 0, \/\/ Only applicable when a publish is marked as mandatory\n            'qos'                   =&gt; false,\n            'qos_prefetch_size'     =&gt; 0,\n            'qos_prefetch_count'    =&gt; 1,\n            'qos_a_global'          =&gt; false\n        ],\n\n    ],\n\n];\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u060c \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0647\u0633\u062a\u06cc\u0645 &#8230; <\/p>\n<p>*<em>\u0645\u0646 \u0635\u0628\u0631 \u0645\u06cc \u06a9\u0646\u0645 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0645\u0641\u06cc\u062f \u0628\u0627\u0634\u062f .. \u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0646\u0638\u0631 \u062e\u0648\u062f \u0631\u0627 \u062a\u0631\u06a9 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0628\u067e\u0631\u0633\u06cc\u062f. \u0634\u0645\u0627 \u0647\u0645\u06cc\u0634\u0647 \u062e\u0648\u0634 \u0622\u0645\u062f\u06cc\u062f *<\/em><\/p>\n<p>\u067e\u06cc\u0648\u0646\u062f \u06a9\u0627\u0645\u0644 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627<\/p>\n<p>\u0645\u0646 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f: brngranado \u062f\u0631 \u0627\u06cc\u0646\u0633\u062a\u0627\u06af\u0631\u0627\u0645 \u060c X \u060c LinkedIn \u060c \u0645\u0648\u0636\u0648\u0639\u0627\u062a. <\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u062f\u0631\u06a9 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u060c \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u0645\u0639\u0645\u0627\u0631\u06cc \u0633\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0631\u0627 \u062a\u0647\u06cc\u0647 \u06a9\u0646\u06cc\u062f \u060c \u0628\u062f\u0648\u0646 \u062a\u0645\u0627\u0645 \u062f\u0631\u0627\u0645 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0627 \u0622\u0646 \u067e\u06cc\u0634 \u0645\u06cc \u0631\u0648\u062f. \u0645\u0627 \u0628\u0627 \u06cc\u06a9 \u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0631\u0627\u06cc \u0647\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f. \u062e\u0648\u0628 \u060c \u0628\u06af\u0630\u0627\u0631\u06cc\u062f \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f \u0627\u0648\u0644\u06cc\u0646 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":101719,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-101718","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/101718","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=101718"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/101718\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/101719"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=101718"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=101718"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=101718"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}