slickdeals/gearman-messenger

Symfony Gearman Messenger Bridge

v1.1.1 2022-06-15 22:19 UTC

This package is auto-updated.

Last update: 2024-04-01 20:53:44 UTC


README

Provides Gearman integration for Symfony Messenger.

Build gearman-messenger

Installation

composer require slickdeals/gearman-messenger

Usage

You will need to add a service to create the transport factory.

# config/services.yaml
services:
    SD\Gearman\Transport\GearmanTransportFactory:
        tags: [ messenger.transport_factory ]

To configure the transport, you'll need to provide a DSN with host, port, and job names. You can specify multiple job names to allow the transport to pull work from multiple Gearman job queues. Routing of messages to handlers in Messenger will still be based on what workload is decoded.

Key Default Value
host localhost
port 4730
job_names[] default
timeout 100 (milliseconds)
framework:
    messenger:
        transports:
            gearman:
                # DSN will use defaults
                dsn: "gearman://"
                # dsn: 'gearman://<host>:<port>?job_names[]=<job1>&timeout=100'

This allows you to have a single transport will support all of your messages, but it does not prevent you from setting up multiple transports that each handle their own set of messages.

Specify Multiple Hosts

You can also pass an array of host:port strings as an option to connect to multiple Gearman Job Servers. Keep the DSN simple as the DSN overrides options.

framework:
    messenger:
        transports:
            gearman:
                dsn: "gearman://"
                options:
                    hosts:
                        - gearman1:4730
                        - gearman2:4730
                        # ...