Stap 32: RabbitMQ gebruiken als een message-broker

5.2 version
Maintained

RabbitMQ gebruiken als een message-broker

RabbitMQ is een zeer populaire message broker die je kunt gebruiken als alternatief voor PostgreSQL.

Overschakelen van PostgreSQL naar RabbitMQ

Om RabbitMQ te gebruiken in plaats van PostgreSQL als message-broker:

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

RabbitMQ toevoegen aan de Docker Stack

Zoals je misschien al geraden hebt, moeten we ook RabbitMQ toevoegen aan de Docker Compose stack:

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 services herstarten

Om Docker Compose te dwingen rekening te houden met de RabbitMQ-container, stop je de containers en start je ze opnieuw:

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

Het verkennen van de RabbitMQ web-beheerinterface

Als je wachtrijen wil zien en berichten door RabbitMQ wil zien vloeien, open dan de web-beheerinterface:

1
$ symfony open:local:rabbitmq

Of via de online debug toolbar:

Gebruik guest/guest om in te loggen op de RabbitMQ-beheerinterface:

RabbitMQ deployen

RabbitMQ toevoegen aan de productieservers kan, door deze toe te voegen aan de lijst met services:

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

Verwijs ernaar in de web container configuratie en schakel de amqp PHP-extensie in:

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:

Wanneer de RabbitMQ-service in een project is geïnstalleerd, kan je de web beheerinterface openen door eerst de tunnel te openen:

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.