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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
--- a/config/packages/messenger.yaml
+++ b/config/packages/messenger.yaml
@@ -5,10 +5,7 @@ framework:
transports:
# https://symfony.com/doc/current/messenger.html#transport-configuration
async:
- dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
- options:
- use_notify: true
- check_delayed_interval: 60000
+ dsn: '%env(RABBITMQ_URL)%'
retry_strategy:
max_retries: 3
multiplier: 2
We moeten ook RabbitMQ ondersteuning toevoegen voor Messenger:
1
$ symfony composer req amqp-messenger
RabbitMQ toevoegen aan de Docker Stack
Zoals je misschien al geraden hebt, moeten we ook RabbitMQ toevoegen aan de Docker Compose stack:
1 2 3 4 5 6 7 8 9 10 11 12 13
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -19,6 +19,10 @@ services:
image: redis:5-alpine
ports: [6379]
+ rabbitmq:
+ image: rabbitmq:3.7-management
+ ports: [5672, 15672]
+
volumes:
###> doctrine/doctrine-bundle ###
db-data:
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:
1 2 3 4 5 6 7 8 9 10 11
--- a/.platform/services.yaml
+++ b/.platform/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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
--- a/.platform.app.yaml
+++ b/.platform.app.yaml
@@ -8,6 +8,7 @@ dependencies:
runtime:
extensions:
+ - amqp
- apcu
- blackfire
- ctype
@@ -41,6 +42,7 @@ mounts:
relationships:
database: "database:postgresql"
redis: "rediscache:redis"
+ rabbitmq: "queue:rabbitmq"
hooks:
build: |
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 cloud:tunnel:open
$ symfony open:remote:rabbitmq
# when done
$ symfony cloud:tunnel:close
Verder gaan