diff --git a/docs/bundle/config_reference.md b/docs/bundle/config_reference.md index fb47b1fd8..1d9506c8a 100644 --- a/docs/bundle/config_reference.md +++ b/docs/bundle/config_reference.md @@ -162,10 +162,14 @@ enqueue: default_processor_queue: default redelivered_delay_time: 0 job: false + async_events: + enabled: false + spool_producer: false extensions: doctrine_ping_connection_extension: false doctrine_clear_identity_map_extension: false signal_extension: true + reply_extension: true ``` [back to index](../index.md) diff --git a/pkg/enqueue-bundle/DependencyInjection/Configuration.php b/pkg/enqueue-bundle/DependencyInjection/Configuration.php index 50603c0b4..bfbf5a1d2 100644 --- a/pkg/enqueue-bundle/DependencyInjection/Configuration.php +++ b/pkg/enqueue-bundle/DependencyInjection/Configuration.php @@ -61,6 +61,7 @@ public function getConfigTreeBuilder() ->booleanNode('doctrine_ping_connection_extension')->defaultFalse()->end() ->booleanNode('doctrine_clear_identity_map_extension')->defaultFalse()->end() ->booleanNode('signal_extension')->defaultValue(function_exists('pcntl_signal_dispatch'))->end() + ->booleanNode('reply_extension')->defaultTrue()->end() ->end()->end() ; diff --git a/pkg/enqueue-bundle/DependencyInjection/EnqueueExtension.php b/pkg/enqueue-bundle/DependencyInjection/EnqueueExtension.php index 70ff035f5..4fb4f5038 100644 --- a/pkg/enqueue-bundle/DependencyInjection/EnqueueExtension.php +++ b/pkg/enqueue-bundle/DependencyInjection/EnqueueExtension.php @@ -134,6 +134,10 @@ public function load(array $configs, ContainerBuilder $container) if ($config['extensions']['signal_extension']) { $loader->load('extensions/signal_extension.yml'); } + + if ($config['extensions']['reply_extension']) { + $loader->load('extensions/reply_extension.yml'); + } } /** diff --git a/pkg/enqueue-bundle/Resources/config/extensions/reply_extension.yml b/pkg/enqueue-bundle/Resources/config/extensions/reply_extension.yml new file mode 100644 index 000000000..b52c46b8f --- /dev/null +++ b/pkg/enqueue-bundle/Resources/config/extensions/reply_extension.yml @@ -0,0 +1,6 @@ +services: + enqueue.consumption.reply_extension: + class: 'Enqueue\Consumption\Extension\ReplyExtension' + public: false + tags: + - { name: 'enqueue.consumption.extension' } \ No newline at end of file diff --git a/pkg/enqueue-bundle/Tests/Unit/DependencyInjection/ConfigurationTest.php b/pkg/enqueue-bundle/Tests/Unit/DependencyInjection/ConfigurationTest.php index 61a1999c7..a5e99b40a 100644 --- a/pkg/enqueue-bundle/Tests/Unit/DependencyInjection/ConfigurationTest.php +++ b/pkg/enqueue-bundle/Tests/Unit/DependencyInjection/ConfigurationTest.php @@ -341,4 +341,39 @@ public function testSignalExtensionCouldBeDisabled() ], ], $config); } + + public function testReplyExtensionShouldBeEnabledByDefault() + { + $configuration = new Configuration([]); + + $processor = new Processor(); + $config = $processor->processConfiguration($configuration, [[ + 'transport' => [], + ]]); + + $this->assertArraySubset([ + 'extensions' => [ + 'reply_extension' => true, + ], + ], $config); + } + + public function testReplyExtensionCouldBeDisabled() + { + $configuration = new Configuration([]); + + $processor = new Processor(); + $config = $processor->processConfiguration($configuration, [[ + 'transport' => [], + 'extensions' => [ + 'reply_extension' => false, + ], + ]]); + + $this->assertArraySubset([ + 'extensions' => [ + 'reply_extension' => false, + ], + ], $config); + } } diff --git a/pkg/enqueue-bundle/Tests/Unit/DependencyInjection/EnqueueExtensionTest.php b/pkg/enqueue-bundle/Tests/Unit/DependencyInjection/EnqueueExtensionTest.php index d5c55ff7a..e999fa6ca 100644 --- a/pkg/enqueue-bundle/Tests/Unit/DependencyInjection/EnqueueExtensionTest.php +++ b/pkg/enqueue-bundle/Tests/Unit/DependencyInjection/EnqueueExtensionTest.php @@ -449,6 +449,40 @@ public function testShouldNotLoadSignalExtensionServiceIfDisabled() self::assertFalse($container->hasDefinition('enqueue.consumption.signal_extension')); } + public function testShouldLoadReplyExtensionServiceIfEnabled() + { + $container = new ContainerBuilder(); + $container->setParameter('kernel.debug', true); + + $extension = new EnqueueExtension(); + + $extension->load([[ + 'transport' => [], + 'extensions' => [ + 'reply_extension' => true, + ], + ]], $container); + + self::assertTrue($container->hasDefinition('enqueue.consumption.reply_extension')); + } + + public function testShouldNotLoadReplyExtensionServiceIfDisabled() + { + $container = new ContainerBuilder(); + $container->setParameter('kernel.debug', true); + + $extension = new EnqueueExtension(); + + $extension->load([[ + 'transport' => [], + 'extensions' => [ + 'reply_extension' => false, + ], + ]], $container); + + self::assertFalse($container->hasDefinition('enqueue.consumption.reply_extension')); + } + public function testShouldAddJobQueueEntityMapping() { $container = new ContainerBuilder(); diff --git a/pkg/enqueue/Consumption/Extension/ReplyExtension.php b/pkg/enqueue/Consumption/Extension/ReplyExtension.php index 22e0fe90f..0d7a76eeb 100644 --- a/pkg/enqueue/Consumption/Extension/ReplyExtension.php +++ b/pkg/enqueue/Consumption/Extension/ReplyExtension.php @@ -37,6 +37,7 @@ public function onPostReceived(Context $context) $replyQueue = $context->getPsrContext()->createQueue($replyTo); + $context->getLogger()->debug(sprintf('[ReplyExtension] Send reply to "%s"', $replyTo)); $context->getPsrContext()->createProducer()->send($replyQueue, $replyMessage); } } diff --git a/pkg/enqueue/Tests/Consumption/Extension/ReplyExtensionTest.php b/pkg/enqueue/Tests/Consumption/Extension/ReplyExtensionTest.php index 90188b45c..9ca27db8c 100644 --- a/pkg/enqueue/Tests/Consumption/Extension/ReplyExtensionTest.php +++ b/pkg/enqueue/Tests/Consumption/Extension/ReplyExtensionTest.php @@ -12,6 +12,7 @@ use Enqueue\Psr\PsrProducer; use Enqueue\Test\ClassExtensionTrait; use PHPUnit\Framework\TestCase; +use Psr\Log\NullLogger; class ReplyExtensionTest extends TestCase { @@ -129,6 +130,7 @@ public function testShouldSendReplyMessageToReplyQueueOnPostReceived() $context = new Context($contextMock); $context->setPsrMessage($message); $context->setResult(Result::reply($replyMessage)); + $context->setLogger(new NullLogger()); $extension->onPostReceived($context); }