خطوة 32: استخدام RabbitMQ كوسيط الرسائل

5.2 version
Maintained

استخدام RabbitMQ كوسيط الرسائل

RabbitMQ هو وسيط رسائل شائع جدًا يمكنك استخدامه كبديل لـ PostgreSQL.

التحول من PostgreSQL إلى RabbitMQ

لاستخدام RabbitMQ بدلاً من PostgreSQL كوسيط للرسائل:

patch_file
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
--- a/config/packages/messenger.yaml
+++ b/config/packages/messenger.yaml
@@ -6,7 +6,7 @@ framework:
         transports:
             # https://symfony.com/doc/current/messenger.html#transport-configuration
             async:
-                dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
+                dsn: '%env(RABBITMQ_URL)%'
                 options:
                     auto_setup: false
                     use_notify: true

إضافة RabbitMQ إلى Docker Stack

كما قد تكون خمنت ، نحتاج أيضًا إلى إضافة RabbitMQ إلى مكدس Docker Compose:

patch_file
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -21,3 +21,7 @@ services:
     redis:
         image: redis:5-alpine
         ports: [6379]
+
+    rabbitmq:
+        image: rabbitmq:3.7-management
+        ports: [5672, 15672]

إعادة تشغيل خدمات Docker

لإجبار Docker Compose على أخذ حاوية RabbitMQ في الاعتبار ، أوقف الحاويات وأعد تشغيلها:

1
2
$ docker-compose stop
$ docker-compose up -d
1
$ sleep 10

استكشاف واجهة إدارة الويب RabbitMQ

إذا كنت تريد رؤية قوائم الانتظار والرسائل التي تتدفق عبر RabbitMQ ، فافتح واجهة إدارة الويب الخاصة به:

1
$ symfony open:local:rabbitmq

أو من شريط أدوات تصحيح أخطاء الويب:

استخدم guest/guest لتسجيل الدخول إلى واجهة مستخدم إدارة RabbitMQ:

نشر RabbitMQ

يمكن إضافة RabbitMQ إلى خوادم الإنتاج عن طريق إضافته إلى قائمة الخدمات:

patch_file
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
--- a/.symfony/services.yaml
+++ b/.symfony/services.yaml
@@ -18,3 +18,8 @@ files:

 rediscache:
     type: redis:5.0
+
+queue:
+    type: rabbitmq:3.7
+    disk: 1024
+    size: S

قم بالرجوع إليها في تكوين حاوية الويب أيضًا وقم بتمكين amqp امتداد PHP :

patch_file
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
--- a/.symfony.cloud.yaml
+++ b/.symfony.cloud.yaml
@@ -4,6 +4,7 @@ type: php:8.0

 runtime:
     extensions:
+        - amqp
         - redis
         - blackfire
         - xsl
@@ -28,6 +29,7 @@ disk: 512
 relationships:
     database: "db:postgresql"
     redis: "rediscache:redis"
+    rabbitmq: "queue:rabbitmq"

 web:
     locations:

عندما يتم تثبيت خدمة RabbitMQ على مشروع ، يمكنك الوصول إلى واجهة إدارة الويب الخاصة به عن طريق فتح النفق أولاً:

1
2
3
4
5
$ symfony tunnel:open
$ symfony open:remote:rabbitmq

# when done
$ symfony tunnel:close

  • « Previous خطوة 31: استخدام Redis لتخزين الجلسات
  • Next » ماذا بعد؟

This work, including the code samples, is licensed under a Creative Commons BY-NC-SA 4.0 license.