Pas 32: Utilizează RabbitMQ ca broker de mesaje

5.2 version
Maintained

Utilizează RabbitMQ ca broker de mesaje

RabbitMQ este un broker de mesaje foarte popular pe care îl poți utiliza ca alternativă la PostgreSQL.

Trecerea de la PostgreSQL la RabbitMQ

Pentru a utiliza RabbitMQ în locul la PostgreSQL ca broker de mesaje:

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:
                     use_notify: true
                     check_delayed_interval: 60000

Adaugă RabbitMQ la stack-ul Docker

După cum probabil ai ghicit, trebuie să adăugăm și RabbitMQ în stack-ul 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]

Repornirea serviciilor Docker

Pentru a forța Docker Compose să ia în considerare containerul RabbitMQ, oprește containerele și pornește-le din nou:

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

Explorarea interfeței de gestionare web RabbitMQ

Dacă vrei să vezi cozile și mesajele care trec prin RabbitMQ, deschide interfața de administrare web:

1
$ symfony open:local:rabbitmq

Sau din bara de depanare:

Folosește guest/guest pentru a te conecta la interfața de gestionare RabbitMQ:

Publicarea pe server la RabbitMQ

Adăugarea RabbitMQ la serverele de producție se poate face prin adăugarea acestuia la lista de servicii:

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

Adaugă referința în configurația containerului web și activează extensia PHP amqp:

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:7.4

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

 web:
     locations:

Când serviciul RabbitMQ este instalat într-un proiect, poți accesa interfața sa de administrare web deschizând mai întâi un tunel:

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

# when done
$ symfony tunnel:close

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