Skip to content

olaurendeau/RabbitMqAdminToolkitBundle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

d37439e · Dec 7, 2021

History

89 Commits
Apr 7, 2020
Apr 7, 2020
Apr 7, 2020
Jan 14, 2020
Apr 7, 2020
Apr 7, 2020
Jan 14, 2020
Jan 28, 2016
Dec 7, 2021
Jan 14, 2020
Jan 31, 2016
Jan 28, 2016
Jan 14, 2020
Jan 28, 2016
Apr 7, 2020
Jan 28, 2016
Dec 7, 2021

Repository files navigation

RabbitMqAdminToolkitBundle

Build Status Scrutinizer Code Quality Code Coverage SensioLabsInsight

License Latest Stable Version Total Downloads Monthly Downloads

Automate rabbitmq vhost's configuration creation / update

Installation

composer require olaurendeau/rabbit-mq-admin-toolkit-bundle

Add RabbitMqAdminToolkitBundle to your bundles

    // config/bundles.php
<?php

return [
    ...
    Ola\RabbitMqAdminToolkitBundle\OlaRabbitMqAdminToolkitBundle::class => ['all' => true]
    ...
];

Update your configuration

# config/packages/ola_rabbit_mq_admin_toolkit.yaml
ola_rabbit_mq_admin_toolkit:
    delete_allowed: true # Allow deletion of exchange, queues and binding for updating configuration. Shouldn't be enabled in production
    connections:
        default: http://user:password@localhost:15672
    vhosts:
        default:
            name: /my_vhost
            permissions:
                user: ~
            exchanges:
                exchange.a: ~
            queues:
                queue.a:
                    bindings:
                        - { exchange: exchange.a, routing_key: "a.#" }
                        - { exchange: exchange.a, routing_key: "b.#" }

Usage

Simply run app/console rabbitmq:vhost:define.

Configuration sample

See app/console config:dump-reference OlaRabbitMqAdminToolkitBundle for full configuration possibilities

# config/packages/ola_rabbit_mq_admin_toolkit.yaml
ola_rabbit_mq_admin_toolkit:
    delete_allowed: true # Allow deletion of exchange, queues and binding for updating configuration. Shouldn't be enabled in production
    default_vhost: test # default is "default"
    silent_failure: true # Catch all exceptions in commands. Could be use in test environment if no rabbitmq available
    connections:
        default: http://user:password@localhost:15672
        vm: http://user:[email protected]:15672
    vhosts:
        test:
            name: /test
            connection: vm # default is "default"
            permissions:
                user: ~
            exchanges:
                exchange.a:
                    durable: false # default is "true"
                exchange.b:
                    type: direct # default is "topic"
                exchange.c: ~
            queues:
                queue.a:
                    durable: false # default is "true"
                    arguments: # define arguments 
                        x-message-ttl: 5000
                    bindings:
                        - { exchange: exchange.a, routing_key: "a.#" }
                        - { exchange: exchange.b, routing_key: "b.#" }
                queue.b:
                    bindings:
                        - { exchange: exchange.a, routing_key: "a.#" }
                        - { exchange: exchange.b, routing_key: "b.#" }
                        - { exchange: exchange.c, routing_key: "c.#" }
                queue.c:
                    bindings:
                        - { exchange: exchange.a, routing_key: "a.#" }
                        - { exchange: exchange.c, routing_key: "c.#" }

Sharding queues

Sharding queues can be useful to process huge amount of messages.

# config/packages/ola_rabbit_mq_admin_toolkit.yaml
ola_rabbit_mq_admin_toolkit:
    delete_allowed: true # Allow deletion of exchange, queues and binding for updating configuration. Shouldn't be enabled in production
    connections:
        default: http://user:password@localhost:15672
    vhosts:
        default:
            name: /my_vhost
            permissions:
                user: ~
            exchanges:
                exchange.a: ~
            queues:
                queue.a.sharded:
                    name: "queue.a.{modulus}"
                    modulus: 5
                    bindings:
                        - { exchange: exchange.a, routing_key: "a.{modulus}.#" }
                        - { exchange: exchange.a, routing_key: "b.#" }

It will produce the following configuration :

capture d ecran 2016-02-10 a 09 56 19

capture d ecran 2016-02-10 a 09 56 33

About

Automate rabbitmq vhost's configuration creation / update

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages