Jak nakonfigurovat extension ve vlastní extension (Kdyby/RabbitMq)

Croc
Člen | 270
+
0
-

Zdravím,
moc prosím o radu. Mám aplikaci, která se skládá z vlastních extension. Ve dvou těchto extensions potřebuji použít Kdyby/RabbitMq.
Chtěl jsem to udělat tak, že bych měl v configu mojí extension definici rabbitmq, protože veškerá definice, komunikace a zpracování probíhá právě v té extension. Nicméně vůbec netuším, jak nakonfigurovat DI aby to fungovalo. Koukal jsem na hromadu návodů a příkladů, ale vůbec mi to nepomohlo. Obdobný příklad jsem nikde nenašel.

agenda.neon – config pro extension

services:
 //----
    - Agenda\Api\ExchangeService

extensions:
    rabbitmq: Kdyby\RabbitMq\DI\RabbitMqExtension

rabbitmq:
    connection: %rabbitmq_connection%
    producers:
        agendaExchangeApi:
            exchange: {name: 'agenda-exchange-api', type: direct}
            queue: {name: 'agenda-exchange-api'}
            contentType: application/json
    consumers:
        agendaExchangeApi:
            connection: default
            exchange: {name: 'agenda-exchange-api', type: direct}
            queue: {name: 'agenda-exchange-api'}
            tags: [kdyby.console.command]
            qos: {prefetchSize: 0, prefetchCount: 10, global: false}
            callback: [@\Agenda\Api\ExchangeService, process]

AgendaExtension.php

namespace Agenda\DI;

use Nette;

/**
 * Class AgendaExtension
 * @package Agenda\DI
 */
class AgendaExtension extends Nette\DI\CompilerExtension {

//    private $defaults = [
//        'tempFilesDir' => 'temp_files',
//        'agendaFilesDir' => 'agenda_files'
//    ];

    /**
     *
     */
    public function loadConfiguration() {

//        $this->validateConfig($this->defaults);
        parent::loadConfiguration();

        $config = $this->loadFromFile(__DIR__ . '/agenda.neon');
        $config = Nette\DI\Helpers::expand($config, $this->validateConfig($this->config));

        Nette\DI\Compiler::loadDefinitions(
            $this->getContainerBuilder(),
            $config['services'],
            $this->name
        );
    }
}

aktuálně dostávám tuto chybu (což je jasné, protože o rabbitmq extension neví):

Service '85' (type of Agenda\Agenda\AgendaModel): Service of type Kdyby\RabbitMq\Connection needed by $bunny in __construct() not found. Did you register it in configuration file?

Moc tedy prosím alespoň o nasměrování. Už jsem na tomto zaseknutý dlouho :-(

Petr Parolek
Člen | 455
+
0
-

Ahoj, řeším stejnou situaci a nevím si rady též. Našel jsem třídu https://github.com/…xtension.php , ale vůbev nevím, jak použít. Poradíte mi prosím někdo? Vyřešil jsi to nakonec nějak @Croc ?