private function exchangeOptions()
    {
        $builder = new NodeBuilder();

        return $builder
            ->arrayNode('exchange_options')
                ->children()
                    // base info
                    ->scalarNode('name')->isRequired()->end()
                    ->scalarNode('type')
                        ->info('Set the type of the exchange. If exchange already exist - you can skip it. Otherwise behavior is unpredictable')
                    ->end()

                    // flags
                    ->booleanNode('passive')->defaultFalse()->end()
                    ->booleanNode('durable')->defaultTrue()->end()
                    ->booleanNode('auto_delete')->defaultFalse()->end()

                    // args
                    ->arrayNode('arguments')
                        ->prototype('scalar')->end()
                        ->defaultValue(array())
                        ->normalizeKeys(false)
                    ->end()

                    // binding
                    ->arrayNode('routing_keys')
                        ->prototype('scalar')->end()
                        ->defaultValue(array())
                    ->end()

                    // default message attributes
                    ->arrayNode('publish_attributes')
                        ->prototype('scalar')->end()
                        ->defaultValue(array())
                    ->end()
                ->end();
            //last end is missed here intentionally because arrayNode doesn't have an actual parent
    }
private function exchangeOptions()
    {
        $builder = new NodeBuilder();

        return $builder
            ->arrayNode('exchange_options')
                ->children()
                    // base info
                    ->scalarNode('name')->isRequired()->end()
                    ->scalarNode('type')
                        ->info('Set the type of the exchange. If exchange already exist - you can skip it. Otherwise behavior is unpredictable')
                    ->end()

                    // flags
                    ->booleanNode('passive')->defaultFalse()->end()
                    ->booleanNode('durable')->defaultTrue()->end()
                    ->booleanNode('auto_delete')->defaultFalse()->end()

                    // args
                    ->arrayNode('arguments')
                        ->prototype('scalar')->end()
                        ->defaultValue(array())
                        ->normalizeKeys(false)
                    ->end()

                    // binding
                    ->arrayNode('routing_keys')
                        ->prototype('scalar')->end()
                        ->defaultValue(array())
                    ->end()

                    // default message attributes
                    ->arrayNode('publish_attributes')
                        ->prototype('scalar')->end()
                        ->defaultValue(array())
                    ->end()
                ->end();
            //last end is missed here intentionally because arrayNode doesn't have an actual parent
    }
private function exchangeOptions ( ) { $ builder = new NodeBuilder ( ) ; return $ builder -> arrayNode ( 'exchange_options' ) -> children ( ) // base info -> scalarNode ( 'name' ) -> isRequired ( ) -> end ( ) -> scalarNode ( 'type' ) -> info ( 'Set the type of the exchange. If exchange already exist - you can skip it. Otherwise behavior is unpredictable' ) -> end ( ) // flags -> booleanNode ( 'passive' ) -> defaultFalse ( ) -> end ( ) -> booleanNode ( 'durable' ) -> defaultTrue ( ) -> end ( ) -> booleanNode ( 'auto_delete' ) -> defaultFalse ( ) -> end ( ) // args -> arrayNode ( 'arguments' ) -> prototype ( 'scalar' ) -> end ( ) -> defaultValue ( array ( ) ) -> normalizeKeys ( false ) -> end ( ) // binding -> arrayNode ( 'routing_keys' ) -> prototype ( 'scalar' ) -> end ( ) -> defaultValue ( array ( ) ) -> end ( ) // default message attributes -> arrayNode ( 'publish_attributes' ) -> prototype ( 'scalar' ) -> end ( ) -> defaultValue ( array ( ) ) -> end ( ) -> end ( ) ; //last end is missed here intentionally because arrayNode doesn't have an actual parent }
Exchange options for both consumer and producer.

@return NodeDefinition
Exchange options for both consumer and producer .