Definice parametrů configu nějaké extension ve vlastním modulu (extension)
- Croc
- Člen | 270
Zdravím,
mám takový problém s implementací extension ve vlastním modulu (také
extension). Konkrétně se jedná o gameeapp/nette-rabbitmq. Pokud mám
configuraci front a konsumerů v hlavním configu aplikace
(root/app/config/config.neon
) všechno funguje. Nicméně tuto
configuraci potřebuju mít ve vlastním balíšku/extension
(root/libs/Ext/src/DI/ext_config.neon
). Pokud definici přesunu do
uvedeného configu dostávám následujicí hlášku:
Gamee\RabbitMQ\Producer\Exception\ProducerFactoryException
Producer [testProducer] does not exist
Všechny služby (consumer a queue) mám v configu modulu
(ext_config.neon
) stejně jako configuraci.
// root/libs/Ext/src/DI/ext_config.neon
services:
# rabbitMQ
- Ext\RabbitMq\Consumer\TestConsumer
- Ext\RabbitMq\Queue\TestQueue(@Gamee\RabbitMQ\Client::getProducer(testProducer))
rabbitmq:
connections:
default:
user: guest
password: guest
host: localhost
port: 5672
queues:
testQueue:
connection: default
autoCreate: true
producers:
testProducer:
queue: testQueue
contentType: application/json
deliveryMode: 2 # Producer::DELIVERY_MODE_PERSISTENT
consumers:
testConsumer:
queue: testQueue
callback: [@Ext\RabbitMq\Consumer\TestConsumer, consume]
qos:
prefetchSize: 0
prefetchCount: 10
// root/libs/Ext/src/DI/ExtExtension.php
<?php
namespace Ext\DI;
use Nette;
class ExtExtension extends Nette\DI\CompilerExtension {
public function loadConfiguration() {
$config = $this->loadFromFile(__DIR__ . '/ext_config.neon');
$config = Nette\DI\Helpers::expand($config, $this->validateConfig($this->config));
Nette\DI\Compiler::loadDefinitions(
$this->getContainerBuilder(),
$config['services'],
$this->name
);
}
}
Nějaké nápady jak toto řešit?
Moc děkuju
- Marek Bartoš
- Nette Blogger | 1274
V extension z configu nelze načítat nic jiného, než služby, příliš pozdě. Též tím vytváříš skryté závislosti mezi extensions.